我在Fragments
中有一些List Collection
用于Viewpager
FragmentStatePagerAdapter
。我只使用getItem(){return list.get(index;}
和getCount(){return list.size()}
。如果我想在适配器中替换该List,我加载另一个包含不同片段的List,调用notifyDataSetChanged()
并再次将适配器设置为viewpager以实现它。
那很好用。
但是,如果我执行此片段集更改,则通过PagerAdapter调用onDestroy()
来破坏之前的片段。现在我想知道是否有可能阻止onDestroy调用?或者我必须使用onSavedInstanceState()
再次加载以前的碎片及其状态?
我只是搜索一些不同的方法来恢复由于适配器的变化而消失的片段的状态。如果有人对此有所了解,分享一些想法会很高兴。如果必要,我可以提供代码。
也许是一个很好的信息:我不使用PagerAdapter来实例化片段。我在将列表加载到适配器之前执行此操作。
答案 0 :(得分:5)
现在我想知道是否可以阻止onDestroy调用?
使用FragmentStatePagerAdapter
的完整和完整点是允许Android销毁未使用的片段。您应该使用FragmentPagerAdapter
代替。
答案 1 :(得分:3)
我在同一天提出同样的问题。
所以我找到了另一个解决方案。
我在Adapter类中覆盖destroyItem(ViewGroup容器,int位置,Object对象)。
并且改变了不能正常工作的super.destroyItem ..
我不确定解决方案是否是更好的解决方案,但它对我来说无疑是有帮助的。