FragmentPagerAdapter的getItem何时被调用?

n00*_*mer 38 android fragmentpageradapter

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

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

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

谢谢!

Kuf*_*ffs 50

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

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

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

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

  • http://stackoverflow.com/questions/10396321/remove-fragment-page-from-viewpager-in-android (2认同)

小智 18

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