何时调用FragmentPagerAdapter的getItem?

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

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

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

谢谢!

  • IllegalStateException:应用程序的PagerAdapter改变了适配器的内容而不调用PagerAdapter#notifyDataSetChanged
  • 问题与FragmentPagerAdapter
  • 如何使用FragmentPagerAdapter获取包含不同内容的标签?
  • IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容
  • IllegalStateException:无法更改片段的标记是android:switcher现在android:switcher
  • 如何使PagerAdapter加载所有页面
  • FragmentPagerAdapter notifyDataSetChanged不起作用
  • 设计支持TabLayout
  • getItem将在适配器需要一个片段并且该片段不存在时被调用。

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

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

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

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

    简单的使用FragmentStatePagerAdapter而不是FragmentPagerAdapter