You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用replace()切换Fragment时原有Fragment未被替换问题求助

问题原因
  • 核心错误是执行Fragment替换时指定的容器ID不正确:你调用replace()方法时传入的R.id.forgot_password_email_fragment是ForgotPasswordEmailFragment自身根布局的ID,而非两个Fragment共同的宿主容器R.id.main_container。
  • 此时逻辑相当于把新的ForgotPasswordNewPasswordFragment嵌入到了旧Fragment的布局内部,旧Fragment本身仍然挂载在Activity的main_container容器中,两个Fragment的布局自然会叠加显示。
修复方案

修改ForgotPasswordEmailFragment内按钮点击的Fragment事务代码,将替换的容器ID改为Activity的公共容器R.id.main_container即可:

val forgotPasswordNewPasswordFragment: Fragment = ForgotPasswordNewPasswordFragment()
val fragmentTransaction: FragmentTransaction = parentFragmentManager.beginTransaction()
// 仅修改这一行的容器ID即可
fragmentTransaction.replace(R.id.main_container, forgotPasswordNewPasswordFragment)
fragmentTransaction.addToBackStack(null)
fragmentTransaction.commit()

内容的提问来源于stack exchange,提问作者Seb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:57:04