将新片段添加到后台堆栈是否会暂停当前片段?

Does adding a new fragment to the backstack pause the current fragment?

我目前正在向后台堆栈添加一个新片段(在当前片段之上):

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()

暂停当前片段?

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

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

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