在导航中,我有类似这样的内容:
当我从深层链接中打开registrationFragment(在entry_graph中)并完成注册时,我被导航到main_graph(MainFragment)。
从那里,我可以访问menuFragment并单击logOut,这将调用:
MainFragmentDirections.actionMainFragmentToEntryFragment()
它将打开registrationFragment而不是loginFragment。我不希望这样,因为loginFragment是该图中的主片段。
当我进行类似的导航但不使用深层链接时,它会按预期运行,它将打开该图中的第一个片段,但是通过这种深层链接流,它将始终打开由深层链接打开的片段。链接,在导航图中的位置无任何变化。
我已经在SO和Web上搜索了解决方案,但是在任何地方都找不到相同的问题。
我尝试过手动将其从后堆栈和类似的解决方案中删除,但我无法成功,它始终会打开由深度链接首先打开的片段。
我正在使用导航版本2.1.0,但是在最新的2.2.0版本上对此流进行了测试,并且其行为相同。
有人知道这种导航流程是否有解决方案吗?
答案 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片段都会打开一个新的缩进。
希望它对您有用:)