我正在使用ViewPager和Fragments。我有偏移设置为1(我知道它是默认值)但它仍然在开始时加载三页(0 - > 1 - > 2)而不是两个(0 - > 1)...可能是什么问题这里吗?
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
...
mPager = (ViewPager) findViewById(R.id.viewpager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mPager.setOffscreenPageLimit(1);
...
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return new InitializationFragment();
} else if (position == 8) {
return new InitializationFragment();
} else if (position == 9) {
return new SummaryFragment();
} else {
return new IngredientFragment(PizzaStage.values()[position - 1], layout);
}
}
@Override
public int getCount() {
return NUM_PAGES; //10
}
}
答案 0 :(得分:0)
使用FragmentPagerAdapter而不是FragmentStatePagerAdapter。
答案 1 :(得分:0)
您是否将setOffscreenPageLimit称为偏移量?如果您在适配器中将NUM_PAGES定义为10,则将加载所有这10个。对于setOffscreenPageLimit,您可以使用它来设置要保留在空闲状态的页数。不限制需要加载的片段。如果你有5个片段并且你不想让android每次向左/向右滑动时重新创建这些片段,那么你需要使用setOffscreenPageLimit。
答案 2 :(得分:0)
ViewPager
将始终尝试将页面预加载到当前页面的右侧和/或左侧,以便在用户滑动时,创建视图没有延迟。
如果要禁用此行为,可以拨打viewPager.setOffscreenPageLimit(0)
。
通常你想知道的是当视图被刷过并且现在是当前视图时。
android - How to determine when Fragment becomes visible in ViewPager - Stack Overflow