1

我有一些Fragmentsin aList Collection用于 aViewpager和 a FragmentStatePagerAdapter。我只使用getItem(){return list.get(index;}getCount(){return list.size()}在其中。如果我想在适配器中替换该列表,我会加载另一个具有不同片段的列表,notifyDataSetChanged()再次调用并将适配器设置为 viewpager 以实现它。那工作得很好。

但是,如果我执行此片段集更改,则先前的片段将onDestroy()通过 PagerAdapter 的调用而被销毁。现在我想知道是否可以阻止 onDestroy 调用?或者我必须使用onSavedInstanceState()再次加载以前的片段及其状态?

我只是搜索一些不同的方法来恢复由于适配器更改而消失的片段的状态。如果有人对此有所了解,很高兴分享一些想法。如有必要,我可以提供代码。

也许是一个很好的信息:我不使用 PagerAdapter 来实例化片段。我在将列表加载到适配器之前执行此操作。

4

2 回答 2

5

现在我想知道是否可以阻止 onDestroy 调用?

使用的完整和全部要点FragmentStatePagerAdapter允许Android销毁不使用的片段。你应该FragmentPagerAdapter改用。

于 2012-10-12T11:32:50.740 回答
3

那天我提出了同样的问题。

所以我找到了另一个解决方案。

我在 Adapter 类中覆盖了 destroyItem(ViewGroup container, int position, Object object)。

并改变了不工作的 super.destroyItem ..

我不确定该解决方案是否是更好的解决方案,但这对我来说绝对有帮助。

于 2015-01-11T02:26:10.930 回答