2010-11-20 2 views
1

Когда я меняю ориентацию своего экрана на Android, вызывается OnItemSelectedListener из Spinner.OnItemSelectedListener вызывал при вращении экрана

Это не просто эмулятор, это также происходит на физическом телефоне.

Как я могу остановить это?

Cheers.

+0

Активность воссоздается при повороте устройства. Вам нужно справиться с этим, чтобы не прекращаться. Прочтите раздел жизненного цикла активности из http://developer.android.com/guide/topics/fundamentals.html#actlife – Pentium10

ответ

2

Спиннеры всегда выбираются. Ваш OnItemSelectedListener будет вызываться при изменении состояния Spinner, в том числе при первом настройке Spinner. При нормальном изменении ориентации ваша деятельность будет уничтожена и воссоздана. Итак, если ваш OnItemSelectedListener вызывается, когда ваша активность сначала появляется на экране, он будет вызываться снова, когда ориентация будет изменена.

Как я могу остановить это?

Вы могли бы поиграть со сроками, когда вы звоните setOnItemSelectedListener() по сравнению с setAdapter(), чтобы увидеть, если это помогает.

+0

Хорошо спасибо за информацию, что имеет смысл. Как я могу поиграть с таймингами? Я новичок в Android, поэтому, пожалуйста, используйте простые слова;) – Entropy1024

+0

@ Entropy1024: измените порядок операторов Java. – CommonsWare

4

Вы также получите второй звонок, если выбранный spinner'sItemPosition не равен нулю, когда экран повернут, так как Android устанавливает положение до того, что было до поворота. Используйте onSaveInstanceState, чтобы подсчитать количество прядильщиков в нулевой позиции и использовать этот счет, чтобы код OnItemSelected просто возвращался, пока счет не уменьшился до нуля.

Вы также должны быть очень осторожны с прядильщиками, которые могут иметь видимость View.GONE. Я добавлю еще немного текста, когда найду время, чтобы точно описать, как с ними справиться.

+1

Не могли бы вы написать, почему вы должны быть осторожны с прядильщиками, которые могут иметь видимость View.GONE. заранее спасибо –

Смежные вопросы