1. parentFragmentManager
含义:
- 指"当前 Fragment 所依附的 FragmentManager"。
- 通常是 Activity 的 FragmentManager,或者是外层 Fragment 的 FragmentManager(如果是嵌套 Fragment)。
使用场景:
- 当前 Fragment 想要和"外部世界"交互,比如添加、替换、移除自己或兄弟 Fragment。
- 绝大多数情况下,普通 Fragment 操作(如
replace
、add
)都用它。
示例:
kotlin
// 在 Fragment 里替换自己或其它 Fragment
parentFragmentManager.beginTransaction()
.replace(R.id.container, AnotherFragment())
.commit()
2. childFragmentManager
含义:
- 用于管理"当前 Fragment 内部嵌套的 Fragment"。
- 即,当前 Fragment 作为一个容器,里面还可以再嵌套 Fragment(比如 ViewPager、Tab 里的 Fragment)。
使用场景:
- 当前 Fragment 需要在自己的布局里嵌套其它 Fragment(比如实现一个 Fragment 作为容器,里面有多个子 Fragment)。
- 用于实现嵌套 Fragment(Nested Fragment)。
示例:
kotlin
// 在 Fragment 里添加一个嵌套的子 Fragment
childFragmentManager.beginTransaction()
.replace(R.id.inner_container, InnerFragment())
.commit()
总结表格
属性 | 代表谁管理谁? | 典型场景 |
---|---|---|
parentFragmentManager | 管理自己和兄弟 Fragment | Fragment 与外部交互(常用) |
childFragmentManager | 管理自己的子 Fragment | Fragment 作为容器嵌套子 Fragment |
场景举例
-
普通页面跳转/替换 Fragment:
用
parentFragmentManager
-
Tab 页(每个 Tab 是一个 Fragment,Tab 内还要嵌套 Fragment):
Tab Fragment 里用
childFragmentManager
管理自己的子 Fragment -
DialogFragment、BottomSheetFragment 等弹窗:
一般用
parentFragmentManager
显示弹窗,也可以用childFragmentManager
管理弹窗里的嵌套 Fragment
总结
- 单层 Fragment 操作 → 用
parentFragmentManager
- 嵌套 Fragment(Fragment 里套 Fragment) → 用
childFragmentManager
如果还有具体代码场景,欢迎补充!