Использование compat lib v1 (не использование v2|3 из-за некоторых ошибок); вариант этого вопроса.
У меня есть фрагмент, пользовательский интерфейс которого имеет различные элементы управления, состояние которых я хочу сохранить при изменении ориентации.
Родительская активность уничтожается при изменении ориентации (ПОЖАЛУЙСТА, не говорите мне об изменениях манифеста, чтобы избежать воссоздания активности!!!!).
Фрагмент вызывает setRetainInstance(true)
.
1) Теперь я понимаю, что представления с уникальными идентификаторами должны сохранять некоторое состояние, скажем, при изменении ориентации. Учитывая это, я бы ожидал ненулевой пакет в onCreateView|onActivityCreated
, но он нулевой.
2) В любом случае, если я сохраняю состояние в onSaveInstanceState
(при условии, что я вызываю super), я все равно получаю нулевой пакет в 'onCreateView|onActivityCreated`
3) Если я не вызываю setRetainInstance(true)
, то я ДЕЙСТВИТЕЛЬНО получаю ненулевой пакет в onCreateView|onActivityCreated
, даже если у меня нет метода `onSaveInstanceState'.
У меня есть вопросы: работает ли это так, как ожидалось, и мое понимание жизненного цикла нарушено? Несмотря на это, я предполагаю, что лучшим путем для меня было бы сохранить фрагмент, а затем самостоятельно поддерживать состояние элементов управления внутри фрагмента.
Заранее спасибо. Питер.
setRetainInstance(true)
. Учитывая, что я получаю ненулевой пакет, если, скажем, приложение уничтожается из-за нехватки памяти, тогда, возможно, это функция. В основном я работаю, сохраняя состояние элементов управления вonDestroyView
и используя их для восстановления элементов управления вonCreateView
, когда пакет равен нулю. Точно так же я сохраняю состояние отключения вonSaveInstanceState
. - person PJL   schedule 07.12.2011