如何使用 NavController 导航片段而不将其添加到后台堆栈中?

Far*_*rov 6 android android-architecture-navigation androidx

NavController具有navigate默认使用 backstack 导航的方法。如何在没有后退堆栈的情况下导航到片段?请注意,我不是在问FragmentTransaction

ian*_*ake 7

如果你有一个后堆栈:

A -> B
Run Code Online (Sandbox Code Playgroud)

并想要获得一个后堆栈

A -> C
Run Code Online (Sandbox Code Playgroud)

您可以通过将 B 从返回堆栈中弹出并添加 C 来执行“替换”操作。

在导航中,这是通过在 XML 中使用app:popUpToapp:popUpToInclusive="true"如果需要的话也可以选择)<action>或使用等效的NavOptionsAPI 来完成的。

<action
  android:id="@+id/goToC"
  app:destination="@+id/c"
  app:popUpTo="@+id/b"
  app:popUpToInclusive="true"/>
Run Code Online (Sandbox Code Playgroud)