Android 扩展FragmentStateAdapter时,每个构造函数之间的区别是什么?
我正在学习片段,在我制作的应用程序中,我有一个底部导航栏,第一个有一个带有ViewPager2的片段。对于viewpager2,我创建了一个扩展FragmentStateAdapter的自定义适配器,首先我使用了接收FragmentActivity的构造函数,然后使用了接收FragmentManager和生命周期的构造函数。我使用它们的方式是这样的:Android 扩展FragmentStateAdapter时,每个构造函数之间的区别是什么?,android,android-fragments,view,android-viewpager,android-viewpager2,Android,Android Fragments,View,Android Viewpager,Android Viewpager2,我正在学习片段,在我制作的应用程序中,我有一个底部导航栏,第一个有一个带有ViewPager2的片段。对于viewpager2,我创建了一个扩展FragmentStateAdapter的自定义适配器,首先我使用了接收FragmentActivity的构造函数,然后使用了接收FragmentManager和生命周期的构造函数。我使用它们的方式是这样的: CustomAdapter adapter = new CustomAdapter(getActivity()); CustomAdapter a
CustomAdapter adapter = new CustomAdapter(getActivity());
CustomAdapter adapter = new CustomAdapter(getChildFragmentManager(), getLifeCycle());
这两种方法似乎都很好,但我想知道使用其中一种方法有什么区别,为什么在第二个适配器上使用getChildFragmentManager()而不是getFragmentManager()
旁注:为了清楚起见,我一次只使用了一个构造函数。实际上有三个构造函数用于
FragmentStateAdapter
:
- -这使用活动的
和活动的getSupportFragmentManager()
。如果您的getLifecycle()
直接托管在活动中,则会使用此选项ViewPager2
- -这使用片段的
和片段的getChildFragmentManager()
。如果您的getLifecycle()
托管在另一个片段中,您将使用此选项ViewPager2
- -这是其他两个构造函数内部调用的。除非您将片段添加到一个根本没有
的服务中,否则您永远不会使用它FragmentActivity
必须始终使用带有
片段的片段
(或者使用getChildFragmentManager()
+getLifecycle()
,如果要为相同效果编写更多代码)在片段内托管ViewPager2
时-这确保了片段的FragmentStateAdapter
创建正确,并在配置更改或进程死亡或重新创建后恢复其状态-只有当它们是具有您的ViewPager2
其中。实际上有三个构造函数用于FragmentStateAdapter
:
- -这使用活动的
和活动的getSupportFragmentManager()
。如果您的getLifecycle()
直接托管在活动中,则会使用此选项ViewPager2
- -这使用片段的
和片段的getChildFragmentManager()
。如果您的getLifecycle()
托管在另一个片段中,您将使用此选项ViewPager2
- -这是其他两个构造函数内部调用的。除非您将片段添加到一个根本没有
的服务中,否则您永远不会使用它FragmentActivity
必须始终使用带有
片段的片段
(或者使用getChildFragmentManager()
+getLifecycle()
,如果要为相同效果编写更多代码)在片段内托管ViewPager2
时-这确保了片段的FragmentStateAdapter
创建正确,并在配置更改或进程死亡或重新创建后恢复其状态-只有当它们是具有您的ViewPager2
在它里面。所以在这种情况下,我应该使用一个片段,正确吗?正确。如果你在一个片段中,你应该使用接受一个片段的构造函数。所以在这种情况下,我应该使用一个接受一个片段正确的构造函数?这是正确的。如果您在片段中,则应该使用接受片段的构造函数。