使用NavController时,Android向上导航正确的图形

时间:2019-03-20 03:46:10

标签: android android-architecture-navigation

我目前在我的项目中使用Android导航架构。它具有可以使用快捷方式启动任何片段的功能。 假设我的导航图如下所示:A-> B-> C-> D。 当我在片段A时,我使用NavController.navigate(R.id.fragment_d)直接导航到片段D。但是,当我按下“后退”按钮时,它返回到片段A。是否有任何方法可以让目标导航到导航图中的父节点? (我的意思是,在这种情况下,D返回C,B然后返回A)。 预先感谢。

2 个答案:

答案 0 :(得分:0)

通常,您应该始终避免在自己的应用程序内创建合成后备堆栈(仅当从应用程序外部的深层链接(例如,通过app shortcut启动应用程序时才这样做)。

但是,您可以采用以下两种方法之一进行处理:

  1. 如果可以在A上重置状态,则可以使用NavDeepLinkBuilder构造一组Intent,以适合在选定的目标上重新启动任务:

    navController.createDeepLink()
      .setDestination(R.id.destination_d)
      .createTaskStackBuilder()
      .startActivites()
    
  2. 只需多次调用navigate()

    navController.navigate(R.id.destination_b)
    navController.navigate(R.id.destination_c)
    navController.navigate(R.id.destination_d)
    

答案 1 :(得分:0)

我认为,如果您为片段正确地引入了父片段,那么您应该可以在目标位置使用navControler.navigateUp()。另外,请考虑设备后退按钮和向上后退箭头之间的区别,以向上移至父级