我实施的ViewPager
标签类似于Google here提供的实施方式。
我的应用有以下行为。我的ViewPager
有3"页" (fragA,fragB,fragC)我在ViewPager
之上实现了3个标签。谷歌的实施和我的实施之间的区别在于标签不用于在fragments
之间导航。
例如,按下我的一个选项卡,在可见片段上加载一组不同的数据。我可以fragA
选中tab3
,fragB
选中tab2
,fragC
选中tab1
。
当我在片段之间滑动时,我想保持状态,即当前选中的选项卡。 我用这段代码来实现这个目标:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && mTabHost != null) {
if (mTabHost.getCurrentTab() != selectedTimePeriod) {
mTabHost.setCurrentTab(selectedTimePeriod);
}
}
}
我在3个片段中有上面的代码,这几乎每次都按预期工作但在某些情况下不幸,我甚至无法完全复制,因为它发生了randonly,状态没有得到维护
在Viewpager
滑动之间保存标签状态(例如屏幕旋转之间)的正确方法是什么?
答案 0 :(得分:5)
您可以使用
viepagerObj.setOffscreenPageLimit(2)
这会加载片段并将其保存在内存中。例如,在您启动时除了第一个(fragC)之外,下一个2个片段(fragB和fragA)将被加载并保存在内存中。默认情况下,该值为1,表示已加载下一个片段(fragB),当您向右滑动时,fragA将加载删除fragC,反之亦然。