Почему я получаю нулевое значение от вращающегося предмета? - PullRequest
0 голосов
/ 18 мая 2019

Я новичок в Android. Я получаю нулевое значение, когда пытаюсь получить выбранный элемент счетчика.

Я попытался сконструировать два Spinner'а, и когда нажал кнопку, запишите один из выбранных прядильщиков в текстовое поле. Но я получаю ноль. Не могли бы вы объяснить причину этого?

public class EERActivity extends AppCompatActivity implements  
OnItemSelectedListener {
private Spinner spinner1; 
private Spinner spinner2; 
private String[] array1= {"xx","yy"};
private String[] array2= {"x2", "y2"};
private ArrayAdapter<String> dataAdapterForArray1;
private ArrayAdapter<String> dataAdapterForArray2;
String selected1;
String selected2;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_eer);

    spinner1 = (Spinner)findViewById(R.id.spinner2);
    spinner2 = (Spinner)findViewById(R.id.spinner3);

    dataAdapterForArray1 = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, array1);
    //and 2 is here..//

    spinner1.setAdapter(dataAdapterForArray1);
    spinner2.setAdapter(...filled...);

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, 
long id) {
    if(parent.getId() == R.id.spinner2) {
        selected1 = spinner1.getSelectedItem().toString();
    }

    else if(parent.getId() == R.id.spinner3){
        selected2 = spinner2.getSelectedItem().toString();
    }
    selectedSpinner1 = spinner1.getSelectedItem().toString();
    selectedSpinner2 = spinner2.getSelectedItem().toString();
}

public void onNothingSelected(AdapterView<?> arg0) {

}


public void run (View view){
textView.setText("Result: " + selected1);  }

Я ожидаю, что выход выбран из spinner1, но результат равен нулю.

1 Ответ

0 голосов
/ 18 мая 2019

Скорее всего, событие запускается до того, как значение фактически изменится в компоненте счетчика.Чтобы решить эту проблему, вы можете добавить нулевую проверку.Попробуйте добавить следующее в первую строку вашего метода «onItemSelected»:

if ((parent.getId() == R.id.spinner2 && spinner1.getSelectedItem() == null) || (parent.getId() == R.id.spinner3 && spinner2.getSelectedItem() == null)) {
    return ;
}

Кроме того, я не уверен, что вы опубликовали весь код, но это выглядит неправильно:

spinner1 = (Spinner)findViewById(R.id.spinner2);
spinner2 = (Spinner)findViewById(R.id.spinner3);
...