【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

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

相关推荐
万少2 小时前
HarmonyOS 开发必会 5 种 Builder 详解
前端·harmonyos
橙序员小站4 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
炫饭第一名7 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
王晓枫7 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊7 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter7 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
曲折8 小时前
Cesium-气象要素PNG色斑图叠加
前端·cesium
Forever7_8 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
Angelial8 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js
jiayu8 小时前
Angular学习笔记24:Angular 响应式表单 FormArray 与 FormGroup 相互嵌套
前端