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

扩展FragmentStateAdapter时,每个构造函数之间的区别是什么?

顾英发
2023-03-14

我正在学习片段,在我制作的应用程序中,我有一个底部导航栏,第一个有一个带有ViewPager2的片段。对于viewpager2,我创建了一个扩展FragmentStateAdapter的自定义适配器,首先我使用了接收FragmentActivity的构造函数,然后使用了接收FragmentManager和生命周期的构造函数。我使用它们的方式如下:

CustomAdapter adapter = new CustomAdapter(getActivity());
CustomAdapter adapter = new CustomAdapter(getChildFragmentManager(), getLifeCycle());

两者似乎都工作正常,但我想知道使用一个或另一个之间有什么区别,以及为什么在第二个适配器上是getChildFragmentManager()而不是getFragmentManager()。

旁注:为了清楚起见,我一次只使用了一个修理工。

共有1个答案

夏侯华彩
2023-03-14

FragmentStateAdapter实际上有三个构造函数:

  • FragmentStateAdapter(FragmentActive)-这使用了活动的getSupportFragmentManager()和活动的getLifesycle()。如果您的ViewPager2直接托管在活动
  • 中,则会使用此功能
  • FragmentStateAdapter(片段)-这使用了片段的getChildFragmentManager()和片段的get生命周期()。如果您的ViewPager2托管在另一个片段中,您将使用此功能
  • FragmentStateAdapter(FragmentManager,生命周期)-这是其他两个构造函数在内部调用的。除非您将片段添加到服务等,否则您永远不会使用它,因为您根本没有Fragmentactive

在片段中托管视图页面2时,必须始终使用获取片段的片段(或者如果要编写更多代码以达到相同效果,请使用getChildFragmentManager(),这可以确保片段的FragmentStateAdapter在配置更改后正确恢复其状态,或者处理死亡或娱乐-只有当它们是片段的子片段时,才可能处理死亡或娱乐,其中包含您的ViewPager2。

 类似资料:
  • 问题内容: 我一直在做大学项目的作业。有一次,当您实际上可以使用构造函数方法来实现相同的结果时,我对于getter和setter的实际使用感到困惑。我已经搜索并找到许多答案,但没有令人满意的解释。我有如下laptop.java 和laoptopRecords.java调用构造函数为 在这里,我没有使用getter和setter方法,并且为每个便携式计算机对象都获得了理想的结果。 如果我以如下方式在

  • 我在react native中开发了几个类,出现了以下问题: 酒吧类:

  • 问题内容: 其实我不明白,无参数构造函数和默认构造函数有什么区别。 创建名为cFrame的Test对象时,这是否调用此类的默认构造函数? 问题答案: 该构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含对(not )的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。 JLS-8.8.9。默认构造函数说(部分), 如果一个类不包含构造函数声明,则隐式声明一个没有

  • 我目前正在阅读有关通配符的文章,但我不知道它们之间是否有任何区别?扩展了Animal,E扩展了Animal。

  • 问题内容: 在同一个开发人员将RegExp字面量更改为构造函数调用后,我们最近遇到了一个错误,我想知道为什么根本没有区别。确切的代码是 与原始的 例如,当为时,第一个(越野车)呼叫返回,而第二个(返回) 不用说,我撤消了更改,但是我想知道为什么首先会有如此不同。 问题答案: 有两个问题: 的是 不 表达的一部分。它们是 分隔符 ,标记了正则表达式文字。如果使用则必须将其删除,否则它们在字面上会匹配

  • 问题内容: 我无法理解为什么我们在PHP中需要2个XML解析器。 有人可以解释两者之间的区别吗? 问题答案: 简而言之: SimpleXml 用于简单的XML和/或简单的UseCases 与节点一起使用的有限API(例如,不能对接口进行太多编程) 所有节点属于同一种类(元素节点与属性节点相同) 节点可以魔术访问,例如 DOM 适用于您可能拥有的任何XML UseCase 是W3C DOM API的