- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 fragment ,在我制作的应用程序中有一个底部导航栏,第一个导航栏有一个带有 ViewPager2 的 fragment 。对于 viewpager2,我创建了一个扩展 FragmentStateAdapter 的自定义适配器,首先我使用了接收 FragmentActivity 的构造函数,然后我使用了接收 FragmentManager 和 Lifecycle 的构造函数。我使用它们的方式是这样的:
CustomAdapter adapter = new CustomAdapter(getActivity());
CustomAdapter adapter = new CustomAdapter(getChildFragmentManager(), getLifeCycle());
两者似乎都工作正常,但我想知道使用一个或另一个之间的区别是什么,以及为什么在第二个适配器上使用 getChildFragmentManager() 而不是 getFragmentManager()。
旁注:需要说明的是,我一次只使用了一个构造函数。
最佳答案
FragmentStateAdapter
实际上有三个构造函数:
FragmentStateAdapter(FragmentActivity)
- 这使用 Activity 的 getSupportFragmentManager()
和 Activity 的 getLifecycle()
。如果您的 ViewPager2
直接托管在 ActivityFragmentStateAdapter(Fragment)
- 这使用 fragment 的 getChildFragmentManager()
和 fragment 的 getLifecycle()
。如果您的 ViewPager2
托管在另一个 FragmentFragmentStateAdapter(FragmentManager, Lifecycle)
- 这是其他两个构造函数在内部调用的内容。你永远不会使用它,除非你向服务添加 fragment ,等等,而你根本没有 FragmentActivity
。您必须始终使用接受 fragment
的那个(或使用getChildFragmentManager()
+getLifecycle()
如果您想为相同的效果编写更多代码)在 Fragment 中托管 ViewPager2
- 这可确保您的 FragmentStateAdapter
创建的 Fragment 在配置更改或进程死亡或重新创建 - 只有当它们是包含您的 ViewPager2
的 fragment 的子 fragment 时才有可能。
关于android - 扩展FragmentStateAdapter时各个构造函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66946122/
ViewPager2 正在删除最后一个选项卡而不是当前选项卡,当我使用 viewpager 时发生了同样的问题。 此选中选项卡在最后一个选项卡时,它会正确删除最后一个选项卡 依赖 implementa
我正在使用 ViewPager2 和 FragmentStateAdapter。 public class MyAdapter extends FragmentStateAdapter { p
这个问题在这里已经有了答案: Proper implementation of ViewPager2 in Android (12 个回答) 2年前关闭。 安卓工作室 3.6 我想在我的 Activi
我正在将 ViewPager2 与 FragmentStateAdapter 一起使用,并且我正在调用 notifyItemChanged(position)。但正如预期的那样,createFragm
在 ViewPager2 位于片段中的静态(3 页)ViewPager2 设置中,我在 FragmentStateAdapter 后代中创建了 3 个片段。我什至在该后代的表( MutableList
我使用数组列表中的数据创建初始内容(我从 firebase 获取)数据每 15 分钟更改一次,我如何调用娱乐或如何将文本从主要 Activity 设置为 fragment/我如何更新 fragment
所以几个月来我一直在尝试从我的应用程序中动态添加和删除 fragment 。我最近迁移到 viewpager2 和 fragmentstateadapter 但无济于事。我的目标是完全删除特定位置的
我正在使用带有 FragmentStateAdapter 的 viewpager2 创建一个文件选择页面。在其中一个页面中,我显示了所有已安装的存储设备,我想在这些设备上点击以查看内容,但我希望内容位
我有一个 FragmentStateAdapter 作为 ViewPager2 的适配器。 class DefaultFragmentStateAdapter(fragment: Fragment)
我正在使用 ViewPager2 构建应用程序滑动时显示不同的 fragment 。我的适配器扩展 FragmentStateAdapter如所述here . 当我将我的应用程序放入后台然后再次恢复时
当我切换到 viewPager2 时,我必须实现另一种类型的适配器(我使用 FragmentPagerAdapter,现在我使用 FragmentStateAdapter),现在我想调用具有旧适配器但
我有viewPager2和FragmentStateAdapter,还有Fragement1、2,3 4,我在fragment2,想去掉fragment3,在fragment2之后显示fragment
我正在为我的项目使用 ViewPager2。我需要在带有 viewpager2 的 fragment 中使用嵌套 fragment 。在我尝试在 fragment (不是嵌套的 fragment )之
我使用 ViewPager2 和 FragmentStateAdapter 显示 5 个 fragments。每个 fragment 都有 ExoPlayer 实例。我正在维护ViewPager2.s
FragmentStateAdapter 抛出 java.lang.IllegalStateException: Design assumption violated, 当设备旋转时。我该如何解决这个
我是一名优秀的程序员,十分优秀!