【问题标题】: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()

暂停当前片段?

【问题讨论】:

    标签: android fragment fragmentmanager back-stack fragment-lifecycle


    【解决方案1】:

    add() 不会影响任何其他片段 - 顾名思义,它只是添加一个新片段,与同一容器中的任何现有片段重叠。

    您可以使用replace() 替换任何现有片段,从而导致其他片段暂停、停止,并将其视图从视图层次结构中删除。这将确保片段在视觉上不会重叠。

    您不能安全地调用 onPause() 或任何其他 on__ 方法 - 这些是由框架调用的,而不是由您调用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多