我目前在我的项目中使用Android导航架构。它具有可以使用快捷方式启动任何片段的功能。 假设我的导航图如下所示:A-> B-> C-> D。 当我在片段A时,我使用NavController.navigate(R.id.fragment_d)直接导航到片段D。但是,当我按下“后退”按钮时,它返回到片段A。是否有任何方法可以让目标导航到导航图中的父节点? (我的意思是,在这种情况下,D返回C,B然后返回A)。 预先感谢。
答案 0 :(得分:0)
通常,您应该始终避免在自己的应用程序内创建合成后备堆栈(仅当从应用程序外部的深层链接(例如,通过app shortcut启动应用程序时才这样做)。
但是,您可以采用以下两种方法之一进行处理:
如果可以在A上重置状态,则可以使用NavDeepLinkBuilder构造一组Intent,以适合在选定的目标上重新启动任务:
navController.createDeepLink()
.setDestination(R.id.destination_d)
.createTaskStackBuilder()
.startActivites()
只需多次调用navigate()
。
navController.navigate(R.id.destination_b)
navController.navigate(R.id.destination_c)
navController.navigate(R.id.destination_d)
答案 1 :(得分:0)
我认为,如果您为片段正确地引入了父片段,那么您应该可以在目标位置使用navControler.navigateUp()
。另外,请考虑设备后退按钮和向上后退箭头之间的区别,以向上移至父级