【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

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

相关推荐
愚昧之山绝望之谷开悟之坡12 小时前
什么是uv和传统的区别
前端·chrome·uv
SRC_BLUE_1712 小时前
NSSCTF - Web | 【第五空间 2021】pklovecloud
android·前端
golang学习记12 小时前
从0死磕全栈之Next.js 数据安全实战指南:从零信任到安全架构
前端
云中雾丽12 小时前
flutter中 getx 的使用
前端
Jay丶13 小时前
聊聊入职新公司两个月,试用期没过这件事
前端·面试
ZTeam前端全栈进阶圈13 小时前
Vue新技巧:<style>标签里的 CSS 也能响应式!
前端
ღ_233313 小时前
vue3二次封装element-plus表格,slot透传,动态slot。
前端·javascript·vue.js
摸着石头过河的石头13 小时前
JavaScript继承的多种实现方式详解
前端·javascript
ybb_ymm13 小时前
前端开发之ps基本使用
前端·css
Ashley的成长之路13 小时前
NativeScript-Vue 开发指南:直接使用 Vue构建原生移动应用
前端·javascript·vue.js