我正在尝试在玩具应用程序中使用导航架构组件。
首先,我在“ nav_graph.xml”中绘制了片段关系。
例如,我画了3个片段A,B和C,如下所示:
A-> B-> C
所以我有2个动作:
通常,我使用以下代码移动另一个片段。
在一个片段中,
findNavController().navigate(ADirections.actionAToB())
在B片段中,
findNavController().navigate(ADirections.actionBToC())
但是您可能知道,还有另一种导航方式。 片段ID可用于直接导航,如下所示:
findNavController().navigate(R.id.a)
就我而言,我没有针对A至C片段的操作。 但是,如果我在A片段中使用以下代码,则可以导航!
findNavController().navigate(R.id.c)
是错误吗?还是打算?
答案 0 :(得分:2)
根据documentation for navigate()
,这是故意的:
这既支持通过action进行导航,也可以直接导航至目的地。
如果您使用的是Safe Args,则仅支持操作。这样可以确保您仅使用在图形中指定的连接。