首页 > 解决方案 > 如何在不使用 NavController 将其添加到 backstack 的情况下导航片段?

问题描述

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

标签: androidandroidxandroid-architecture-navigation

解决方案


如果您有以下堆栈:

A -> B

并想回到后面的堆栈

A -> C

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

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

<action
  android:id="@+id/goToC"
  app:destination="@+id/c"
  app:popUpTo="@+id/b"
  app:popUpToInclusive="true"/>

推荐阅读