第一次显示时仅加载选项卡(片段)并保留以供以后使用

时间:2018-04-21 08:00:06

标签: java android android-viewpager material-design android-tabs

我可以使用FragmentsViewPager显示为标签。

我想要实现的是,

  1. 仅当选择作为当前选项卡时,才应加载片段的内容。
  2. 一旦显示并加载了一个标签,那么每当我回到同一个标签时,它就会被保留,即不再加载。
  3. 我知道要保留所有标签,我可以使用以下内容,

    viewPager.setOffscreenPageLimit(4); // 4 is total number of tabs
    

    但是当我这样做时,会在最开始时加载所有4个标签,即在开头的所有4个标签中调用onCreateView。如何在第一次显示时加载它,然后保留以供以后使用。

    P.S。此功能存在于Twitter和Facebook Android应用程序中。

    感谢任何帮助。

    感谢。

2 个答案:

答案 0 :(得分:3)

To retain the fragments make your view pager adapter extend FragmentPagerAdapter instead of FragmentStatePagerAdapter. The fragments will be retained in memory, so there is no need to set the page limit. To fire the things you have to load upon user visibility, just extend setUserVisibleHint as mentioned above.

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser && myData == null) {
        loadData()
    }
}

答案 1 :(得分:0)

android片段确实提供了以下方法

@Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
    }

当片段仅在屏幕上可见时,会调用此方法。 因此,无论您在onCreateView()中执行的代码是什么,都可以在此方法中进行管理。