【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

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

相关推荐
岁月宁静4 小时前
Vue3.5 + SSE 构建高可用 AI 聊天交互层 ——chat.js 模块架构与实现
前端·vue.js·人工智能
~无忧花开~4 小时前
JavaScript学习笔记(十七):ES6生成器函数详解
开发语言·前端·javascript·笔记·学习·es6·js
前端 贾公子4 小时前
Vue3 defineModel === 实现原理
前端·javascript·vue.js
东华帝君4 小时前
五种继承的方式
前端
snowbitx4 小时前
一篇文章彻底搞懂前端架构层面分层设计
前端·设计模式·前端框架
Keepreal4964 小时前
React组件生命周期,各个生命周期可以进行什么操作以及如何使用useEffect模拟组件生命周期
前端·react.js
JiKun4 小时前
ECMA 2025(ES16) 新特性
前端·javascript
一路上__有你4 小时前
闲来无事,写一篇文章吧!
前端·javascript·vue.js