У меня есть приложение для Android, в котором я хочу динамически добавлять и удалять фрагменты в ViewPager во время выполнения и сохранять фрагменты при изменениях конфигурации.Сохранить состояние динамического ViewPager
До сих пор я реализовал FragmentStatePagerAdapter, держа мои фрагменты в списке с методами add
, remove
и replace
манипулировать мои фрагменты. В основном, все, что они делают, это вставить или удалить фрагмент в списке, а затем позвонить notifyDatasetChanged()
. Я вставляю искомый фрагмент в качестве нового фрагмента во время действия onCreate()
.
Я знаю, что хочу сохранить свои фрагменты во время изменений конфигурации. В настоящее время, когда я меняю ориентацию на экране, все мои фрагменты в настоящее время удаляются, и я возвращаюсь к исходному фрагменту, естественно, потому что активность воссоздана, а Фрагмент и Адаптатор восстанавливаются во время вызова onCreate()
. Я пытался сохранить состояние адаптера с Adapter.saveInstance()
во время действий onPause()
, но когда я попытаюсь восстановить его через Adapter.restoreInstance()
, я получаю пустой адаптер.
Может ли кто-нибудь дать мне подсказку о том, что является правильным способом в Android, чтобы сохранить состояние FragmentStatePagerAdapter
?
Спасибо, это было то, что я искал. Мне пришлось поместить его в цикл for(), чтобы сохранить все фрагменты в моем адаптере, но, похоже, он работает так, как ожидалось. –
Ну, это действительно работает только для ограниченного количества фрагментов. Когда я хочу сохранить фрагменты, отсутствующие более одного экрана моего текущего фрагмента, я получаю ошибку «Фрагмент не в FragmentManager». Любые намеки на это? –
В onSaveInstanceState() вы сохраните только тот фрагмент, который в настоящее время прикреплен/видим пользователю. Итак, в следующий раз, когда пользователь повторно создаст активность при повороте экрана, он вернется к тому же самому фрагменту, который был последним. Таким образом, за один раз вы увидите только один фрагмент, видимый в вашей активности с контейнером –