ViewPager和自定义适配器

时间:2014-04-10 13:30:39

标签: android android-fragments android-viewpager

我已经使用自定义适配器设置了ViewPager。该适配器缓存它显示的碎片。代码如下所示:

@Override
public Fragment getItem(int position) {
    Fragment f = getCachedFragment(position);
    if (f == null) {
        //create and add fragment to cachedFragments
    }
    System.out.println("getItem: Fragment named:" + mTabs.get(position).clss.getSimpleName() + " with Hash " + f.hashCode());
    return f;
}

一切正常。除非片段显示的初始片段似乎不是使用getItem()方法创建的。

我已经确认正在启动2种不同类型的片段,一种采用getItem()方法,另一种采用神奇的方式,我无法解释。问题是正确创建的一个不是正在显示的片段,因此尝试访问它并操纵它上面的视图将失败,因为onCreateView()从未被调用过。

如您所见,创建或检索的每个片段都记录在与相应hashCode的聊天中。除此之外,我还添加了另一个system.out,它告诉我片段的新实例。

现在,当我在ViewPager的索引0上时,也会加载索引1的片段,但不会使用getItem()。我的问题是,索引1的片段是如何启动的?我检查了ViewPagerAdapter文档,但它没有提供任何类型的解决方案,因为它只是说它使用getItem()来获取相应的项目。

非常感谢任何指向正确方向的指针。

0 个答案:

没有答案