我正在使用ViewPager
来显示同一课程的3 ListFragments
,但每个ListView
的{{1}}内容应根据{{1}而有所不同索引。
Fragment
:
Fragment
和ListFragment
:
public static NavigationListFragment newInstance(int index) {
NavigationListFragment listFrag = new NavigationListFragment();
Bundle bundle = new Bundle();
bundle.putInt("num", index);
listFrag.setArguments(bundle);
Log.d("INDEX", index+"");
return listFrag;
}
问题:在开始时我立即记录FragmentPagerAdapter
和 @Override
public Fragment getItem(int index) {
return NavigationListFragment.newInstance(index);
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
,当我滑到寻呼机内的第二个项目时,它会显示INDEX 0
而不会显示最后一个。但是,为每个页面正确设置了标题(我正在使用INDEX 1
)。
为什么INDEX 2
方法第一页被调用了2次,但最后一次没有被调用?
更新
我发现我不能依赖TabStrip
方法,因为它被调用来预加载多个getItem()
。那么现在的问题是如何在设置片段getItem()
之前如何安全地确定片段的位置?
更新2
我最终创建了3个Fragments
类并根据索引实例化它们,但不知何故我觉得这是一个丑陋的解决方案,我会感谢更优雅的一个。
答案 0 :(得分:1)
ViewPager
为滑动动画目的创建最近的项目。因此,第一次当活动附加ViewPager
用户时,应该看到第一个片段并可以滑动到第二个片段。用户滑动时ViewPager
创建第三个,用户可以再次滑动。
ViewPager
ViewPager
创建第一个和第二个项目 - 用户查看第一个片段ViewPager
创建第三项ViewPager
销毁第一个片段并创建第四个