Сохранение пользовательского интерфейса при изменении ориентации - onSaveInstanceState не работает должным образом при сохранении фрагмента

Использование compat lib v1 (не использование v2 | 3 из-за некоторых ошибок); вариант этого вопроса .

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

Родительская активность разрушается при изменении ориентации (ПОЖАЛУЙСТА, не сообщайте мне о явных изменениях, чтобы избежать воссоздания активности !!!!).

Фрагмент вызывает setRetainInstance (true) .

1) Теперь я понимаю, что представления с уникальными идентификаторами должны сохранять некоторое состояние, скажем, при изменении ориентации. Учитывая это, я ожидал бы ненулевого пакета в onCreateView | onActivityCreated , но он нулевой.

2) В любом случае, если я сохраню состояние в onSaveInstanceState (гарантируя, что я вызываю super), я все равно получаю нулевой пакет в 'onCreateView | onActivityCreated`

3) Если я не вызываю setRetainInstance (true) , то я получаю ненулевой пакет в onCreateView | onActivityCreated , даже если у меня нет метода onSaveInstanceState.

У меня есть вопросы: работает ли это так, как ожидалось, и мое понимание жизненного цикла нарушено? Тем не менее, я предполагаю, что лучший путь для меня - это сохранить фрагмент, а затем самостоятельно поддерживать состояние элементов управления внутри фрагмента.

Заранее спасибо. Питер.

18
задан Community 23 May 2017 в 12:07
поделиться