ViewPager中的碎片 - 错误的索引?

时间:2014-07-19 11:30:39

标签: android android-fragments android-viewpager

我正在使用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类并根据索引实例化它们,但不知何故我觉得这是一个丑陋的解决方案,我会感谢更优雅的一个。

1 个答案:

答案 0 :(得分:1)

ViewPager为滑动动画目的创建最近的项目。因此,第一次当活动附加ViewPager用户时,应该看到第一个片段并可以滑动到第二个片段。用户滑动时ViewPager创建第三个,用户可以再次滑动。

  1. ViewPager
  2. 的附件
  3. ViewPager创建第一个和第二个项目 - 用户查看第一个片段
  4. 滑动开始 - 用户看到第一个和第二个之间的转换
  5. 滑动结束 - 用户看到第二个片段
  6. ViewPager创建第三项
  7. 滑动开始 - 用户看到第二个和第三个之间的转换
  8. 滑动结束 - 用户查看第三个片段
  9. ViewPager销毁第一个片段并创建第四个