【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

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

相关推荐
灰海5 小时前
为什么给<a>标签设置了download属性, 浏览器没有下载而是打开新标签!!
前端·vue·html·下载·download
1024肥宅5 小时前
面试和算法:常见面试题实现与深度解析
前端·javascript·面试
float_六七6 小时前
行级与块级元素:核心区别与应用场景
开发语言·前端·javascript
毕设十刻6 小时前
基于Vue的家教预约系统7fisz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
前端无涯6 小时前
深度解析:fetch 与 Promise 结合实战及面试重点
前端·javascript
风舞红枫6 小时前
node代理vue打包后的文件,实现本地测试
前端·javascript·vue.js·node.js
helloCat6 小时前
记录CI/CD自动化上传AppGallery遇到的坑
android·前端·api
Yanni4Night6 小时前
使用URLPattern API构建自己的路由器 🛣️
前端·javascript
web守墓人6 小时前
【前端】garn:使用go实现一款类似yarn的依赖管理器
前端
全栈陈序员6 小时前
Vue 实例挂载的过程是怎样的?
前端·javascript·vue.js·学习·前端框架