add()方法
- 将新的 Fragment 添加到容器中,不删除现有 Fragment。
- 原有 Fragment 保持
onResume()状态,新 Fragment 进入生命周期(onAttach()→onCreate()→ ... →onResume() - 多个 Fragment 会叠加显示(需手动控制显示/隐藏,否则可能出现 UI 重叠)
replace()方法
- 原有 Fragment 会被销毁(触发
onDestroyView()等),新 Fragment 正常初始化。 - 每次替换后容器内只有一个 Fragment 存在。
- 适合单页切换场景(每次只展示一个 Fragment,如:视频播放器、地图 Fragment)
回退栈(Back Stack)
-
addToBackStack(null) 时:
add():按返回键会回退到上一个状态(可能显示多个叠加的 Fragment)。replace():按返回键会恢复被替换的 Fragment(重新执行其生命周期)
性能使用场景
-
add()+show()/hide():- 优势:避免重复创建/销毁 Fragment,提升性能(适合频繁切换的界面,如主内容区 + 悬浮面板、对话框式 Fragment、ViewPager 的相邻页面)。
- 注意:需手动管理 Fragment 的显示/隐藏,防止 UI 重叠。
-
replace():- 优势:简化管理,确保容器内只有一个活跃 Fragment。
- 代价:频繁替换可能导致性能下降(反复初始化 Fragment)。