何时调用FragmentPagerAdapter的getItem?

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

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

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

谢谢!

Solutions Collecting From Web of "何时调用FragmentPagerAdapter的getItem?"

getItem将在适配器需要一个片段并且该片段不存在时被调用。

如果片段已经存在于FragmentManager中,则不需要实例化,getItem也不需要被调用。

要更新现有的片段,您需要从FragmentManager或适配器中检索它并相应地进行处理。

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

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

简单的使用FragmentStatePagerAdapter而不是FragmentPagerAdapter