Когда я создаю свою активность, я настраиваю Spinner, назначая ему прослушиватель и начальное значение. Я знаю, что обратный вызов onItemSelected
вызывается автоматически во время инициализации приложения. То, что я нахожу странным, заключается в том, что при повороте устройства это происходит дважды, что вызывает некоторые проблемы, которые мне придется обойти. Это означает, что не, если исходный выбор счетчика равен нулю. Я смог изолировать проблему, вот простейшая ее деятельность:
public class MainActivity extends Activity implements OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Test","Activity onCreate");
setContentView(R.layout.activity_main);
((Spinner)findViewById(R.id.spinner1)).setSelection(2);
((Spinner)findViewById(R.id.spinner1)).setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> spin, View selview, int pos, long selId)
{
Log.i("Test","spin:"+spin+" sel:"+selview+" pos:"+pos+" selId:"+selId);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
}
И здесь лог-код отображается, когда приложение запущено, а затем устройство повернуто:
I/Test( 9881): spin:[email protected] sel:[email protected] pos:2 selId:2
I/Test( 9881): Activity onCreate
I/Test( 9881): spin:[email protected] sel:[email protected] pos:2 selId:2
I/Test( 9881): spin:[email protected] sel:[email protected] pos:2 selId:2
Является ли это ожидаемым поведением? Я что-то пропустил?