带有标签的Android ViewPager保存状态

时间:2014-12-22 11:34:48

标签: android android-fragments tabs android-viewpager

我实施的ViewPager标签类似于Google here提供的实施方式。

我的应用有以下行为。我的ViewPager有3"页" (fragA,fragB,fragC)我在ViewPager之上实现了3个标签。谷歌的实施和我的实施之间的区别在于标签不用于在fragments之间导航。 例如,按下我的一个选项卡,在可见片段上加载一组不同的数据。我可以fragA选中tab3fragB选中tab2fragC选中tab1

当我在片段之间滑动时,我想保持状态,即当前选中的选项卡。 我用这段代码来实现这个目标:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser && mTabHost != null) {
        if (mTabHost.getCurrentTab() != selectedTimePeriod) {
            mTabHost.setCurrentTab(selectedTimePeriod);
        }
    }
}

我在3个片段中有上面的代码,这几乎每次都按预期工作但在某些情况下不幸,我甚至无法完全复制,因为它发生了randonly,状态没有得到维护

Viewpager滑动之间保存标签状态(例如屏幕旋转之间)的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

您可以使用

viepagerObj.setOffscreenPageLimit(2)

这会加载片段并将其保存在内存中。例如,在您启动时除了第一个(fragC)之外,下一个2个片段(fragB和fragA)将被加载并保存在内存中。默认情况下,该值为1,表示已加载下一个片段(fragB),当您向右滑动时,fragA将加载删除fragC,反之亦然。