Ожидается, что адаптер будет «свежим» при восстановлении состояния - PullRequest
1 голос
/ 18 июня 2019

У меня есть viewpager2 с несколькими фрагментами в FragmentStateAdapter. Всякий раз, когда я пытаюсь открыть новый фрагмент и затем вернуться к моему текущему с помощью viewpager2, я получаю исключение:

Expected the adapter to be 'fresh' while restoring state.

Кажется, FragmentStateAdapter не может должным образом восстановить свое состояние, поскольку ожидает, что он будет пустым.

Что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Я столкнулся с той же проблемой с ViewPager2. После многих усилий по тестированию различных методов это сработало для меня:

public void onExitOfYourFragment() {
    viewPager2.setAdapter(null);
}

Когда вы снова возвращаетесь к фрагменту:

public void onResumeOfYourFragment() {
    viewPager2.setAdapter(yourAdapter);
}
1 голос
/ 18 июня 2019

Итак, моя проблема заключалась в том, что я создавал свой FragmentStateAdapter внутри поля класса Fragment, где он был создан только один раз.Поэтому, когда мой onCreateView был вызван во второй раз, я получил эту проблему.Если я воссоздаю адаптер при каждом вызове onCreateView, похоже, он работает.

...