将新片段添加到后台堆栈是不是会暂停当前片段?
Posted
技术标签:
【中文标题】将新片段添加到后台堆栈是不是会暂停当前片段?【英文标题】:Does adding a new fragment to the backstack pause the current fragment?将新片段添加到后台堆栈是否会暂停当前片段? 【发布时间】:2020-11-07 20:36:45 【问题描述】:我目前正在向后台堆栈添加一个新片段(在当前片段的顶部):
val fragmentTransaction = fragmentManager?.beginTransaction()
fragmentTransaction?.add(R.id.cl_my_profile_edit, newFragment)?.addToBackStack(null)
fragmentTransaction?.commit()
这会暂停运行此代码的当前片段吗?
如果这不会暂停当前片段
会这样调用onPause()
:
val fragmentTransaction = fragmentManager?.beginTransaction()
fragmentTransaction?.add(R.id.cl_my_profile_edit, newFragment)?.addToBackStack(null)
fragmentTransaction?.commit()
onPause()
暂停当前片段?
【问题讨论】:
【参考方案1】:add()
不会影响任何其他片段 - 顾名思义,它只是添加一个新片段,与同一容器中的任何现有片段重叠。
您可以使用replace()
替换任何现有片段,从而导致其他片段暂停、停止,并将其视图从视图层次结构中删除。这将确保片段在视觉上不会重叠。
您不能安全地调用 onPause()
或任何其他 on__
方法 - 这些是由框架调用的,而不是由您调用的。
【讨论】:
以上是关于将新片段添加到后台堆栈是不是会暂停当前片段?的主要内容,如果未能解决你的问题,请参考以下文章
Android Navigation - 导航时弹出当前片段