【Fragment】parentFragmentManager , childFragmentManager 区别是什么? 分别在什么场景使用?


1. parentFragmentManager

含义:

  • 指"当前 Fragment 所依附的 FragmentManager"。
  • 通常是 Activity 的 FragmentManager,或者是外层 Fragment 的 FragmentManager(如果是嵌套 Fragment)。

使用场景:

  • 当前 Fragment 想要和"外部世界"交互,比如添加、替换、移除自己或兄弟 Fragment。
  • 绝大多数情况下,普通 Fragment 操作(如 replaceadd)都用它。

示例:

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

场景举例

  1. 普通页面跳转/替换 Fragment:

    parentFragmentManager

  2. Tab 页(每个 Tab 是一个 Fragment,Tab 内还要嵌套 Fragment):

    Tab Fragment 里用 childFragmentManager 管理自己的子 Fragment

  3. DialogFragment、BottomSheetFragment 等弹窗:

    一般用 parentFragmentManager 显示弹窗,也可以用 childFragmentManager 管理弹窗里的嵌套 Fragment


总结

  • 单层 Fragment 操作 → 用 parentFragmentManager
  • 嵌套 Fragment(Fragment 里套 Fragment) → 用 childFragmentManager

如果还有具体代码场景,欢迎补充!

相关推荐
IT_陈寒3 分钟前
React的useState居然还有这种坑?我差点删库跑路
前端·人工智能·后端
Pedantic1 小时前
SwiftUI 手势笔记
前端·后端
橙子家2 小时前
浏览器缓存之【结构化数据库与缓存】: IndexedDB、Cache storage 和 Storage buckets
前端
user20585561518132 小时前
X6 中边悬浮置顶,规避 `mouseleave` 事件丢失问题
前端
李明卫杭州2 小时前
CSS aspect-ratio 属性完全指南
前端
Pedantic4 小时前
SwiftUI 手势层级(Gesture Hierarchy)详解
前端
飘尘4 小时前
前端转型全栈(Java后端)的快速上手指引
前端·后端·全栈
一颗烂土豆4 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
浏览器工程师5 小时前
AI Agent 接浏览器任务,先别让它一路点到底
前端·后端