我在 ViewPager
实例中使用的 fragment 非常耗费资源,所以我只想一次加载一个。当我尝试以下操作时:
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 个屏幕外页面,或者我在这里做错了什么?
最佳答案
我发现最好的方法是setUserVisibleHint
将此添加到您的 fragment 中
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// load data here
}else{
// fragment is no longer visible
}
}
关于android - ViewPager.setOffscreenPageLimit(0) 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073214/