我将 FragmentStatePagerAdapter 与视图分页器结合使用,该视图分页器嵌套在 Android 上的片段中。因此,我将 ChildFragmentManager 与 FragmentStatePagerAdapter 结合使用来创建我的片段。
到目前为止一切都很好,但问题是:
如果我在未完成使用视图分页器托管片段的活动的情况下打开另一个活动,然后恢复它,则在 ViewPager 中选择的片段为空。如果我在打开不同的 Activity 之前切换 ViewPager 中的片段,则不会出现此问题。返回并在 ViewPager 中看到空片段后,我仍然可以切换下一个片段,但如果我尝试切换回空片段,则会收到 NullPointerException。如果我在托管 ViewPager 的片段和其他片段之间切换或者更改方向,则不会出现此问题。
如果我使用 FragmentManager 而不是 ChildFragmentManager,则在切换到不同的 Activity 时不会出现此问题,但如果我在托管和不同的片段之间切换或更改方向,则会出现此问题。
所以这是我已经尝试过但没有成功的方法:
* 使用FragmentStatePagerAdapter适配器和FragmentPagerAdapter
* 使用 setRetainedInstance(true 和 false)
* 使用 getChildFragmentManager() 和 getFragmentManager()
* 重写 getItemPosition() 返回 POSTION_NONE 并在 onResume() 中使用 notificationDataChanged()
目前唯一能做到这一点的是在 onResume() 中重新创建 PagerAdapter 并重新初始化 ViewPager,但我认为这是非常糟糕的做法,因为所有内容都需要重新创建。
那么是否有人可以向我解释正确的实现应该是什么样子,或者为什么片段会变成空(它们不为空,我检查过)。我正在寻找一种更优雅的解决方案,而不是每次恢复活动时都重新创建所有内容。
非常感谢任何帮助。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)