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

时间:2019-02-11 05:07:04

标签: android android-fragments android-navigation android-architecture-navigation

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

首先,我在“ nav_graph.xml”中绘制了片段关系。

例如,我画了3个片段A,B和C,如下所示:

A-> B-> C

所以我有2个动作:

  • action_a_to_b
  • action_b_to_c

通常,我使用以下代码移动另一个片段。

在一个片段中,

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

在B片段中,

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

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

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

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

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

是错误吗?还是打算?

1 个答案:

答案 0 :(得分:2)

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

  

这既支持通过action进行导航,也可以直接导航至目的地。

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