Android 导航,我可以移动任何未连接的片段

Android Navigation, I can move any fragment which is not connected

我正在尝试在我的玩具应用程序中使用导航架构组件。

首先我在"nav_graph.xml".

中画出了片段关系

比如我画了A、B、C 3个片段如下:

A -> B -> C

所以我有 2 个动作:

一般来说,我使用下面的代码来移动另一个片段。

在A片段中,

findNavController().navigate(ADirections.actionAToB())

在B片段中,

findNavController().navigate(ADirections.actionBToC())

但您可能知道,还有另一种导航方式。 片段 ID 可用于直接导航,如下所示:

findNavController().navigate(R.id.a)

就我而言,我没有 A 到 C 片段的操作。 但是如果我在我的 A 片段中使用下面的代码,我就可以导航了!

findNavController().navigate(R.id.c)

这是一个错误吗?还是故意的?

根据 documentation for navigate() 这是故意的:

This supports both navigating via an action and directly navigating to a destination.

如果您使用的是 Safe Args,则仅支持操作。这确保您仅使用您在图表中指定的连接。