Сохранение состояния фрагмента при любом изменении конфигурации и сохранение состояния в приложении Android - PullRequest
0 голосов
/ 06 августа 2020

Я создаю приложение Android с тремя вкладками, реализованными с использованием ViewPager и Fragment.
На этих вкладках у меня есть настраиваемое представление Recycler для отображения данных. Все фрагменты создаются динамически.

Каждый раз, когда приложение переходит в фоновый режим, я изменяю некоторые системные настройки и переключаюсь обратно в приложение, все приложение воссоздается заново, и состояние фрагментов теряется.
Итак Я попытался сохранить FragmentTags в HashMap в методе MainActivity внутри onSaveInstanceState(Bundle), заполнив HashMap из метода внутри класса фрагмента.
Я успешно получил все теги в MainActivity.
Когда я сохраняю объекты с использованием getFragmentSupportManager().findFragmentByTag("myTag") в методе onRestoreInstanceState(Bundle) ссылка на объект была изменена.

Пример:

  • Когда фрагмент был создан впервые
    BlankFragment{10ef54a (b6c32b5a-a2a9-4c40-a5db-07c93a2bb08a) id=0x7f080130 android:switcher:2131231024:0}

  • После любого изменения конфигурации
    BlankFragment{c125fc8 (b6c32b5a-a2a9-4c40-a5db-07c93a2bb08a) id=0x7f080130 android:switcher:2131231024:0}

«BlankFragment» - это имя класса фрагмента .

Если тег остался прежним, почему изменилась ссылка на объект?
Как сохранить предыдущее состояние фрагмента?

...