背景
我有下一个场景:
-
有一个带有物品的导航抽屉 . 每个都切换到不同的片段 .
-
其中一个片段包含一个viewPager,它包含片段 .
-
每个viewPager的片段都有一个ListView .
-
当用户在viewPager的页面之间切换,或转到另一个导航抽屉片段,然后返回到viewPager的一个片段时,ListView应该恢复到其原始状态 .
我使用的只是通过支持库 .
问题
看来这种情况对支持库不起作用,我得到了各种例外,例如:
NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference viewpager
我发现了什么
我发现这个问题已知(链接here) .
我所做的(它的工作原理)是这样的:
-
具有viewPager的片段包含所有片段实例 .
-
viewpager中的每个片段都保存其膨胀视图,并在调用onCreateView时返回它 .
-
viewpager中的每个片段都像普通片段一样保存并恢复其保存状态 .
-
我用于viewPager的适配器从"FragmentStatePagerAdapter"扩展,它有一个函数"restoreState",它覆盖它不会调用"super.restoreState()" .
-
在片段之间切换的活动包含对viewPager的片段的引用 .
这非常浪费(存储对片段和视图的引用),但它可以工作 .
这个问题
还有比这更好的解决方案吗?