ViewPager.setOffscreenPageLimit(0)不能按预期方式工作

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1071)

我在ViewPager实例中使用的片段资源密集,因此我只想一次加载一个片段。当我尝试以下操作时:

mViewPager.setOffscreenPageLimit(0);
mViewPager.setAdapter(mPagerAdapter);

我的FragmentStatePagerAdapter.getItem(int position)覆盖功能被称为3次,这是我打电话时发生的事情mViewPager.setOffscreenPageLimit(1)。我希望它只能被调用一次,因为我指定了0个离屏页面。

我相信我会正确地调用所有的东西,因为如果我打电话的话mViewPager.setOffscreenPageLimit(2)FragmentStatePagerAdapter.getItem(int position)就像我期望的那样被称为5次。

ViewPager需要至少1个屏外页面,还是我在这里做错了什么?

提问于
用户回答回答于

ViewPager需要至少1个屏幕外的页面

是。如果我正确阅读源代码,您应该在LogCat中获得有关此警告的信息,如下所示:

Requested offscreen page limit 0 too small; defaulting to 1
用户回答回答于

我发现最好的方法是setUserVisibleHint 将它添加到你的片段中

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        // load data here
    }else{
       // fragment is no longer visible
    }
}

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问5 回答
  • uncle_light

    5 粉丝518 提问4 回答
  • o o

    4 粉丝495 提问4 回答
  • 学生

    8 粉丝476 提问3 回答

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动