当前位置: 首页 > 知识库问答 >
问题:

何时调用FragmentPagerAdapter的getItem?

柴宏浚
2023-03-14

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

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

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

谢啦!

共有3个答案

劳和雅
2023-03-14

只需使用FragmentStatePagerAdapter而不是FragmentPagerAdapter

FragmentStatePagerAdapter销毁不需要的fragments实例的实例,并按需重新实例化。另一方面,FragmentPagerAdapter只是分离片段并重新附加它。因此在FragmentPagerAdapter中创建的片段永远不会被销毁。这就是为什么我总是更喜欢FragmentStatePagerAdapter。

武卓
2023-03-14

比上面的答案更具体一点(这是正确的!),getItem是由FragmentPagerAdapter的instantiateItem(ViewGroup container,int position)方法调用的。以防万一:)

亢保赫
2023-03-14

每当适配器需要片段而该片段不存在时,将调用getItem。

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

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

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

 类似资料:
  • 我使用带有ViewPager的FragmentPagerAdapter来切换片段 那么我如何使片段调用它们的onResume()呢?

  • 我在使用FragmentPagerAdapter时遇到问题。我想从视图寻呼机中的片段中检索数据。当我调用getItem()方法时,它返回一个片段,但不创建片段。所有片段变量均为null。我需要做什么来实例化片段?这是我的适配器。 这是viewpager中的片段。 我不太了解ViewPager是如何工作的,但据我所知,片段在没有设置任何变量的情况下返回的原因是因为ViewPager没有附加片段。如何

  • 由于API 27已弃用。对此最好的替代方案是什么? 在我的例子中,我知道需要使用之类的东西,但我不知道在我的代码中这需要去哪里。 我在班上得到了这些进口货: 但是 被划掉了。

  • 我无法通过使我的片段相互通信,该活动使用作为一个帮助器类,该类实现对选项卡的管理以及将与相关联的连接的所有细节。我已经实现了,就像Android示例项目Support4Demos提供的一样。 主要的问题是,当我既没有Id也没有标记时,如何从获得特定的片段?创建片段并自动生成Id和标记。

  • 我有一个警告:FragmentPagerAdapter已弃用。这是我的代码: 我在这里找到了一个可能的解决方案:片段页面适配器已弃用 但它在Kotlin中。 警告的字眼是:超级

  • 我目前正在考虑应该使用PagerAdapter的哪个实现。我对他们俩都有两难的选择。让我给你看看这些是什么。 1#FragmentPagerAdapter 工作良好,当没有以前的实例可用时,它会创建片段的新实例,当有这样的机会时,它会检索以前的片段。 那不是很低效吗?我在Google I/O materials上看到Romain Guy说,创建新的效率不高,特别是当我们创建大量时,就像在中那样,因

  • 问题内容: 什么时候 叫?我有一个活动,需要在调用onMeasure之后执行一项操作。 我的问题与此处未回答的问题相同。在查看文档指出onMeasure当被称为requestLayout()被调用时,它显然是对自身视图调用时它认为是不能再目前的范围内配合。 但是,这不能告诉我何时我的活动可以假设我的视图已被测量。我已使用此代码将ImageView扩展为TouchImageView。建议在这里使用o

  • 在什么情况下会调用applicationWillTerminate?例如,如果代码中出现崩溃,是否会调用它? 苹果的doc对此语焉不详,它只说当系统出于某种原因需要终止它的时候。 对于不支持后台执行或针对iOS3.x或更早版本链接的应用程序,当用户退出应用程序时,总是调用此方法。对于支持后台执行的app,用户退出app时一般不会调用此方法,因为在那种情况下app只是移动到后台。但在app在后台运行