2012-10-12 126 views
1

我有一些FragmentsList Collection用于ViewpagerFragmentStatePagerAdapter。我只使用getItem(){return list.get(index;}getCount(){return list.size()}。如果我想在适配器中替换该列表,我使用不同的片段加载另一个列表,请拨打notifyDataSetChanged()并将适配器重新设置为viewpager以使其发生。 这工作正常。防止FragmentStatePagerAdapter不破坏片段

但是,如果我做了这个片段集更改以前的片段是通过PagerAdapter调用onDestroy()破坏了。现在我想知道是否有可能阻止onDestroy调用?或者我必须使用onSavedInstanceState()加载之前的碎片及其状态吗?

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

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

回答

5

现在我想知道它是否有可能阻止onDestroy调用?

使用FragmentStatePagerAdapter完整整点是允许的Android摧毁未使用的片段。您应该使用FragmentPagerAdapter代替。

+1

该信息的Thx。比我得到的文件错误,因为“..可能被摧毁..”。我试试FPA。我已经使用函数saveState()和restoreState()达到了我的目标。 –

+0

@SteveBenett你可以发布你的样本吗? – handrenliang

3

我在昨天提出了同样的问题。

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

我重写适配器类中的destroyItem(ViewGroup容器,int位置,Object对象)。

和更改工作不super.destroyItem ..

我不知道该解决方案是更好的解决方案,但它肯定对我有所帮助。