AndroidX 导航 navigateUp 两次

AndroidX navigation navigateUp twice

我正在使用新的 AndroidX 导航框架。

我有几个片段都链接在导航链中。

片段A --> 片段B --> 片段C

FragmentC 有一个“取消”按钮,可以让我回到 FragmentA。

我应该执行以下操作吗:
在 FragmentC 上调用方法:

 Navigation.findNavController(view).navigateUp();

然后在 FragmentB 上监听一些回调并使用一些传递的参数或参数从 FragmentB 触发另一个 navigateUp() 函数

或者是否有一些方法相当于 navigateUpTwice()

您可以在 FragmentB --> FragmentC 的操作中将 pop 设置为 FragmentA,然后当您按下返回时它会转到 Fragment A 而不是 Fragment B

我最后做的是

Navigation.findNavController(view).popBackStack(R.id.fragmant_a,false)

试试这个,对我有用。

findNavController().navigateUp()
findNavController().navigateUp()

在您的 navigation.xml 文件中,在您创建的用于导航到起始片段(在您的情况下为 FragmentA)的操作下,添加以下内容

<action
....
app:popUpTo="@id/fragmentA"
app:popUpToInclusive="false"/>

这将弹出 FragmentA 之前的所有片段并将排除 FragmentA,因为 popUpToInclusive 设置为 false