阻止在viewpager中重新创建片段

时间:2017-11-04 15:04:40

标签: android fragment state

我想在viewpager中阻止片段重新创建,默认情况下,每次导航到viewpager中的片段时,android都会创建该片段的新实例。 setOffscreenPageLimit(x)可以解决这个问题,但我不想在活动的onCreate中加载更多的片段。有没有想过解决这个问题并在下次选择后维护片段实例?

2 个答案:

答案 0 :(得分:1)

View Viewrs最常用的两个类是:

他们看起来很多,但不是全部。

您需要的是 FragmentPagerAdapter

这样可以保留片段,而不是每次都重新创建片段,如下面的引文所说:

  

PagerAdapter的实现,它将每个页面表示为片段,只要用户可以返回到页面,该片段就会持久保存在片段管理器中。

此处也在同一文档中:

  

用户访问的每个页面的片段将保存在内存中......

虽然记得使用它,但是内存将是你的责任,你必须管理你的视图的内存,如果它们很多就检查你拥有的页面数,以这种方式显示50页不是一个好主意。只有少于10个( Tabs可能是它的最佳选择)。你很好。内存管理是唯一可以采取注意的内容,因为文档本身会说:

  

这可能导致使用大量内存,因为片段实例可以保持任意数量的状态。对于较大的页面集,请考虑FragmentStatePagerAdapter

因此,将适配器更改为FragmentPagerAdapter,您的片段将保留在内存中,而不是重新创建。

答案 1 :(得分:0)

尝试设置Fragment.setRetainInstance(true)。如果您使用FragmentPagerAdapter,这将导致现有片段“生存”。而不是重新创建。它会被分离并重新连接。