FragmentPagerAdapter的getItem何时被调用?

时间:2013-10-12 21:43:12

标签: android fragmentpageradapter

我正在编写一个使用FragmentPagerAdapter的应用程序。需要根据外部数据更新适配器中的片段 - 但这不会发生。我注意到片段类只在getItem函数中实例化了一次:

@Override
public Fragment getItem(int position) {
    TabInfo info = mTabs.get(position);
    return Fragment.instantiate(mContext, info.clss.getName(),
                info.args);
}

即使我删除了该类并使用了一个新类,也没有任何帮助 - 这个方法只调用一次,第一次填充选项卡,然后再也不会。任何人都知道为什么?

谢谢!

3 个答案:

答案 0 :(得分:49)

只要适配器需要片段并且片段不存在,就会调用

getItem。

如果片段已经存在于FragmentManager中,那么就不需要实例化它,也不需要调用getItem。

要更新现有片段,您需要从FragmentManager或适配器中检索它并相应地对其进行操作。

默认情况下,viewpager将为可见页面和旁边的页面创建片段。即,首先是位置1和2中的片段。当您滑动到第2页时,将创建位置3处的片段等

答案 1 :(得分:17)

为了比上面的答案更具体(这是正确的!),getItem由FragmentPagerAdapter的instantiateItem(ViewGroup容器,int位置)方法调用。以防万一有帮助:)

答案 2 :(得分:1)

简单使用FragmentStatePagerAdapter代替FragmentPagerAdapter