(Fragment二)Fragment的add 和 replace 的区别?Fragment回退栈的工作原理?

addreplaceFragmentTransaction中两个最基础也最易混淆的操作,它们的区别直接影响到Fragment的视图层级和生命周期。而回退栈则是实现Fragment导航的关键。理解这两者,是构建复杂、可回退的Fragment界面的基础。”


第一部分:add 与 replace 的本质区别

核心区别在于:它们修改的是不同的东西add操作的是FragmentManager中的Fragment列表,而replace操作的是容器视图中的内容

为了更直观地理解这一核心机制,下图展示了在一次replace操作中,容器内视图的完整切换流程及对应的回退栈记录:

让我们结合代码和图表进行详细分析:

add 操作
  • 行为:将一个新的Fragment添加FragmentManager的管理列表中,并将其视图添加到指定的容器视图中。

  • 生命周期:被添加的Fragment会经历完整的生命周期,直到onResume(如果Activity已处于resumed状态)。

  • 视图层级多次add操作会导致多个Fragment的视图在容器中重叠。后添加的Fragment视图会盖住先添加的。

  • 场景:适用于需要同时显示多个Fragment的场景,例如画中画、仪表盘等。

kotlin

supportFragmentManager.beginTransaction()
    .add(R.id.container, FragmentA()) // 第一次add,显示A
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值