阻止在viewpager中重新创建片段

问题描述 投票:0回答:2

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

android fragment state
2个回答
1
投票

View Pagers有两个最常用的类:

他们在很多方面都看起来很像,但不是全部。

你需要的是FragmentPagerAdapter

这将保留Fragment你想要的,而不是每次都重新创建,如下面的引用从官方文档中说:

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

并且在同一文档中:

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.