Android Spinner, несколько массивов - PullRequest
0 голосов
/ 26 октября 2011

Я нигде не смог найти ответ на этот вопрос (вполне возможно, что я не ищу права). В Android я пытаюсь заставить один спиннер в моем приложении вытягивать из нескольких массивов, в зависимости от того, какой переключатель выбран. Если выбрана радиокнопка 1, я хочу, чтобы спиннер использовал массив 1, если выбрана радиокнопка 2, я хочу, чтобы спиннер использовал массив 2. Вот то, что у меня есть, но это не работает. Каждый раз, когда я нажимаю на вкладку в моем приложении с этим кодом, мое приложение закрывается.

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);
    }


}

}

1 Ответ

0 голосов
/ 26 октября 2011

Трудно диагностировать проблему без сообщений об ошибках, которые вы видите.Не могли бы вы отредактировать свой вопрос и включить его?

Однако я замечаю одну вещь: вы создаете разные блесны в каждом из этих случаев.Попробуйте использовать

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

над вашими операторами if.Тогда тело ваших операторов if будет выглядеть следующим образом:

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 кнопок.

...