Как обращаться с сохранением состояния фрагментов внутри ViewPager, который находится внутри фрагмента NavigationDrawer?
Фон
У меня есть следующий сценарий:
Есть навигационный ящик с предметами. каждый переключается на другой фрагмент.Один из фрагментов содержит viewPager, который содержит фрагменты.Каждый из фрагментов viewPager содержит ListView.Когда пользователь переключается между страницами viewPager или переходит к другому фрагменту навигационного ящика, а затем обратно к одному из фрагментов viewPager, ListView должен быть восстановлен в своем первоначальном состоянии.Все, что я использовал, это через библиотеку поддержки.
Эта проблемаКажется, что эта ситуация не работает с библиотекой поддержки, и я получаю различные исключения, например:
NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference viewpager
Что я нашелЯ узнал, что эта проблема известна (ссылкаВот)
Что я сделал (и это работает) это:
фрагмент с viewPager содержит все экземпляры фрагментов.каждый фрагмент в viewpager хранит свое завышенное представление и возвращает его в случае вызова onCreateView.каждый фрагмент в окне просмотра сохраняет и восстанавливает свое сохраненное состояние, как в обычных фрагментах.адаптер, который я использую для viewPager, происходит от «FragmentStatePagerAdapter» и имеет функцию «restoreState», которую он переопределяет, которая не будет вызывать «super.restoreState ()».действие, которое переключается между фрагментами, содержит ссылку на фрагмент с помощью viewPager.Это довольно расточительно (хранение ссылок на фрагменты и представления), но это работает.
ВопросЕсть ли лучшее решение, чем это?