具有选项卡的Android ViewPager保存状态

Fav*_*las 3 tabs android android-fragments android-viewpager

我要实现的ViewPager选项卡类似于Google 在此处提供的实现。

我的应用程序具有以下行为。我ViewPager有3个“页面”(fragA,fragB,fragC),并且在的顶部实现了3个标签ViewPager。Google的实现与我的实现之间的区别在于,这些标签不用于在之间进行导航fragments。例如,按我的一个标签,在可见片段上加载另一组数据。我可以fragAtab3选择,fragBtab2选择fragCtab1选择。

当我在片段之间滑动时,我想保持当前选中的选项卡的状态。我通过以下代码实现了这一点:

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

我在3个片段中都有上面的代码,并且几乎每次都可以按预期方式工作,但是不幸的是,在某些情况下,我什至无法完全重现,因为它仅发生在rand上,无法保持状态。

Viewpager两次滑动之间保存选项卡状态(例如在屏幕旋转之间)的正确方法是什么?

dro*_*kid 5

您可以使用

viepagerObj.setOffscreenPageLimit(2)
Run Code Online (Sandbox Code Playgroud)

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