Избегайте Android автоматически повторно добавить мой фрагмент при изменении ориентации - PullRequest
5 голосов
/ 18 марта 2011

У меня есть ListFragment, который зависит от хостинга Activity для правильной инициализации.При первом запуске загружается нормально.Как только я меняю ориентацию, мое приложение вылетает.По трассировке стека я вижу, что я не пытаюсь добавить Fragment преждевременно, скорее Android пытается восстановить Fragment.

У меня setRetainInstance(false) установлено в методе onStartно не могу найти способ отключить восстановление Fragment после изменения ориентации.Есть идеи?Нужно ли удалять Fragment до того, как мое приложение будет уничтожено?

Редактировать: я отложил инициализацию списка до тех пор, пока действие не будет готово.Android удобно отображает сообщение «загрузка» до тех пор, пока не будет установлен адаптер.

Ответы [ 2 ]

1 голос
/ 20 марта 2011

В итоге я отложил инициализацию списка, пока действие не будет готово.Android удобно отображает сообщение о загрузке до тех пор, пока не будет установлен адаптер.

0 голосов
/ 18 марта 2011

У меня есть ListFragment, который зависит от активности хостинга для правильной инициализации.

Это может быть вашей трудностью прямо здесь.

Из трассировки стека я вижу, что я не пытаюсь добавить фрагмент преждевременно, скорее Android пытается восстановить его.

Correct.

Есть идеи?

Я бы сосредоточился на правильной обработке изменений конфигурации. Между onSaveInstanceState() во фрагменте и комбинацией onRetainNonConfigurationInstance(), getLastNonConfigurationInstance() (оба на Activity) и onAttach() (на вашем Fragment) вы должны быть в состоянии передать все, что есть в старом фрагменте на новый без сбоев. Для изменений конфигурации не полагайтесь на «Активность хостинга для правильной инициализации».

...