Сохранение состояния отображаемого в данный момент фрагмента в ViewPager - PullRequest
0 голосов
/ 21 октября 2018

В настоящее время я работаю с TabLayout, который использует ViewPager для отображения трех разных экземпляров фрагмента.Это «мастер» фрагменты в моем потоке мастер-деталей.

Когда пользователь поворачивает экран, приложение отображает два фрагмента, основной и подробный фрагменты.То, чего я пытался добиться, это отобразить один и тот же мастер-фрагмент при повороте из портретного в альбомный режим.Поэтому, если я сейчас смотрю на второй экземпляр «MyFragment», который находится на второй вкладке, я хочу, чтобы этот же экземпляр был в моем главном фрагменте при повороте экрана.

Я смотрел на разныерешения, связанные с жизненным циклом фрагмента, но ни одно из них не работает в моем конкретном сценарии.Любой совет по этой проблеме будет с благодарностью!

Если проблема недостаточно ясна и необходим код, я отредактирую этот пост с помощью необходимого кода.

1 Ответ

0 голосов
/ 22 октября 2018

Переориентация устройства является деструктивным процессом, поскольку в нем разрушается Активность, отображаемая в данный момент на экране, и поскольку их жизненные циклы связаны, любые фрагменты также присоединяются к этой Активности.Чтобы восстановить состояние пользовательского интерфейса, я хотел бы сохранить эту информацию в виде флагов / полей в экземпляре ViewModel .Поэтому, когда устройство переориентируется, а Activity / Fragments воссоздается, вы можете извлечь VideModel и проверить его поля, чтобы узнать, какой фрагмент должен отображаться изначально.

...