Android导航-在深度链接导航到第二个片段之后,在同一图中但从另一个导航图中打开第一个片段

时间:2020-03-10 12:49:17

标签: android android-fragments graph navigation deep-linking

在导航中,我有类似这样的内容:

Navigation graph mock image

  1. 当我从深层链接中打开registrationFragment(在entry_graph中)并完成注册时,我被导航到main_graph(MainFragment)。

  2. 从那里,我可以访问menuFragment并单击logOut,这将调用:

    MainFragmentDirections.actionMainFragmentToEntryFragment()

  3. 它将打开registrationFragment而不是loginFragment。我不希望这样,因为loginFragment是该图中的主片段。

当我进行类似的导航但不使用深层链接时,它会按预期运行,它将打开该图中的第一个片段,但是通过这种深层链接流,它将始终打开由深层链接打开的片段。链接,在导航图中的位置无任何变化。

我已经在SO和Web上搜索了解决方案,但是在任何地方都找不到相同的问题。

我尝试过手动将其从后堆栈和类似的解决方案中删除,但我无法成功,它始终会打开由深度链接首先打开的片段。

我正在使用导航版本2.1.0,但是在最新的2.2.0版本上对此流进行了测试,并且其行为相同。

有人知道这种导航流程是否有解决方案吗?

1 个答案:

答案 0 :(得分:3)

如何在步骤2中导航?我尝试了相同的流程,并且在使用here中描述的代码时它可以正常工作。

基本上这是代码

PendingIntent pendingIntent = new NavDeepLinkBuilder(context)
.setGraph(R.navigation.nav_graph)
.setDestination(R.id.android)
.setArguments(args)
.createPendingIntent();

如文档中所述,当您使用Intent进行导航时,将重置后向堆栈,并使用每个先前图形的 home片段进行填充。 只要确保在nav_graph xml中正确正确地描述了所需的后台堆栈-每个 home片段都会打开一个新的缩进。

希望它对您有用:)