Android 导航组件 popupTo self

Android Navigation Component popupTo self

我正在使用导航组件在我的应用程序中导航。我正在使用树结构并逐个节点导航用户 -> Node == NodeFragment。但现在我正在努力向后导航到特定节点。

例如:图像导航堆栈看起来像这样 A -> B -> C -> D 当用户想从节点 D 直接导航到节点 B 我想弹出片段 C, D 和直接去 B?

例如:您可以想象像浏览文件夹结构这样的事情,您可以在其中一次又一次地浏览相同的片段。然后您想返回到不是当前文件夹父文件夹的特定文件夹。

但我不知道如何使用导航组件来实现它。对于导航,我使用的是自我操作。提前致谢。

<fragment
    android:id="@+id/nodeFragment"
    android:name="com.example.NodeFragment">

    <action
        android:id="@+id/action_chatbotBuilderChildrenFragment_self2"
        app:destination="@id/nodeFragment" />
        
</fragment>

进入您的导航图,单击 C -> D 上的操作(箭头线),在右侧面板上(确保处于设计模式而不是拆分或代码模式)您将看到 pop up tp选项,然后选择Fragment B,就可以了。因此,无论何时您在 Fragment D 并单击 Back 键,应用程序都会导航回 Fragment B

所以我找到了一些非常简单的解决方法。似乎在排序的时间段内多次调用 NavController.navigateUp() 就可以了。我不确定这是否是正确的解决方案,但它解决了我的问题。 我也很惊讶,即使我的片段转换在多次调用 NavController.navigateUp() 后也没有中断。

代码示例:

repeat(numberOfPopUps) {
     findNavController().navigateUp()
}