Android 导航图在导航上添加额外的片段以堆叠

Android navigation graph add extra fragment to stack on navigation

解法: 接受的答案和@ianhanniballake 的评论都有效。 由于评论的简单性,我将使用评论一! 解法:

我正在尝试以下操作:

导航图中有三个片段
1:仪表板(开始)
2:包含项目的列表
3: 物品详情

用户可以从 1 导航到 2 或直接从 1 导航到 3 以获取几个项目。如果用户从 1 转到 3 我想先回到 2

因此,例如:

>表示栈中向前

<表示在堆栈中向后移动

case1:先去list的时候
1 > 2 > 3 < 2 < 1

case2:当直接进入详情时
1 > 3 < 2 < 1

这样的事情可能吗?

谢谢!

这可以通过重写可以找到的返回实现来完成 here,并在按下返回时返回到您想要的片段。

我会创建一个新的导航操作,从 Fragment3 开始到 Fragment2。请务必 select popToInclusive 执行此操作。然后在 Fragment3 中执行以下操作以确保在按下后退时,在 Fragment3 中返回时始终显示 Fragment2:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val callback: OnBackPressedCallback =
            object : OnBackPressedCallback(true) {
                override fun handleOnBackPressed() {
                    // Handle the back button event
                    findNavController().navigate(Fragment3FragmentDirections.actionFragment3ToFragment2())
                }
            }
    requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}