我将NagivationDrawer
与ViewPager
一起用于我的应用。当用户选择抽屉中的项目时,视图寻呼机将相应地设置片段。
在MainActivity类
中....
@Override
public void onNavigationDrawerItemSelected(int position) {
Log.d("POSITION", "=======================================");
Log.d("POSITION ItemSelected", position +"");
if(mViewPager != null){
mViewPager.setCurrentItem(position);
}
}
......
我的ViewPagerAdapter类是
public class LessonPageAdapter extends FragmentStatePagerAdapter {
public LessonPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new LessonFragment();
Bundle args = new Bundle();
Log.d("POSITION PagerAdapter", position +"");
args.putInt(LessonFragment.ARG_SECTION_NUMBER, position);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 7;
}
}
我发现从position
方法调用mViewPager.setCurrentItem(position)
时传递的onNavigationDrawerItemSelected(int position)
的值与我position
的值不同(递增或递减) getItem(int position)
的{{1}}方法。
FragmentStatePagerAdapter
谁能告诉我原因?解决方案是什么?
答案 0 :(得分:1)
您的应用是否正常运行?在viewPager中,不仅加载了当前页面,还加载了左右页面,使滚动看起来无缝。因此调用getItem()来预加载下一页,您的日志完全正确。
您还可以使用viewPager.setOffscreenPageLimit(int)来设置要预加载的每一侧的页数。默认值和最小值为1.