2011-10-26 17 views
0

私はどこにでもこの回答を見つけることができませんでした(私は正しい検索をしていない可能性があります)。 Androidでは、ラジオボタンが選択されているかどうかによって、複数の配列からアプリを1つスピンさせるようにしています。ラジオボタン1が選択されている場合、スピナーに配列1を使用させたい、ラジオボタン2が選択されている場合、スピナーに配列2を使用させたい。ここまではこれまで行ってきたことがあるが、動作しない。このコードでアプリのタブをクリックするたびに、アプリが強制終了します。Android Single Spinner、Multiple Arrays

public class This_Activity extends Activity { 
/** Called when the activity is first created. */ 

private RadioButton rb1; 
private RadioButton rb2; 
private RadioButton rb3; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tab_2_layout); 
    rb1=(RadioButton)findViewById(R.id.Radio1); 
    rb2=(RadioButton)findViewById(R.id.Radio2); 
    rb3=(RadioButton)findViewById(R.id.Radio3);}{ 




    if(rb1.isChecked() == true){ 

     Spinner spinner1 = (Spinner) findViewById(R.id.Spinner); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.Array1, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner1.setAdapter(adapter); 
    } 

    if(rb2.isChecked() == true){ 

     Spinner spinner2 = (Spinner) findViewById(R.id.Spinner); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.Array2, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner2.setAdapter(adapter); 
    } 

    if(rb3.isChecked() == true){ 

     Spinner spinner3 = (Spinner) findViewById(R.id.Spinner); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.Array3, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner3.setAdapter(adapter); 
    } 


} 

}

+0

あなたのログをチェックし、アプリが強制的に閉じる理由を –

+0

rb3 =(RadioButton)findViewById(R.id.Radio3);} {.. remove "} {"そしてこれはそれとは関係ありませんしかし、とにかく:rb1.isChecked()== trueは常にtrueを返すので、代わりにrb1.isChecked() – Carnal

答えて

0

あなたが見ているエラーメッセージなしで問題を診断することは困難です。質問を編集してそれらを含めることができますか?

しかし、私が気付いていることは、あなたがそれぞれのケースで異なるスピナーを作成していることです。 if文の上に

Spinner spinner = (Spinner) findViewById(R.id.Spinner); 
ArrayAdapter<CharSequence> adapter = null; 

を使用してみてください。次に、あなたの身体の文は、それが今であるとして、これはのみ発生しますので、あなたはまた、おそらく、ユーザーがそれらをクリックしたときに自動的にスピナーを変更するには、あなたのラジオボタンにリスナーをフックアップしたい

adapter = ArrayAdapter.createFromResource(
     this, R.array.Array1, android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

のようになります場合にはコンストラクタで

rb1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // change your spinner adapter here 
     } 
    }); 

RadioGroupであなたのラジオボタンを置き、その上OnCheckChangedListenerを置くために、おそらく簡単ですので、あなただけのすべての3つのボタンに1人のリスナーが必要です。