Android Navigation Component 在图形中一次跳转几步
Android Navigation Component jump a few steps in graph at once
我使用导航组件,在某些情况下我需要一次向前导航几步。例如 FragmentA
指向 FragmentB
,后者指向 FragmentC
。我的目标是在某些情况下直接跳转到 FragmentC
但具有正常的导航图,因此当用户从 FragmentC
返回时 he/she 出现在 FragmentB
上,就好像他出现在FragmentC
一一导航。
我发现 NavDeepLinkBuilder
可以通过以下方式解决我的问题:
val pendingIntent = NavDeepLinkBuilder(context)
.setGraph(R.navigation.my_graph)
.addDestination(R.id.fragmentA_destination,
.addDestination(R.id.fragmentB_destination)
.setComponentName(MyActivity::class.java)
.createPendingIntent()
pendingIntent.send()
它确实做了我想要的,但有 2 个问题:
- 它完成了调用activity,我不知道我是否可以阻止它完成它。
- 这似乎根本不对,因为
PendingIntent
并非设计用于在我自己的应用程序内部导航,所以我上面所做的似乎是一种 hack。
那么,如果不使用此 PendingIntent
机制,我还能如何获得相同的结果?
只需多次调用 navigate()
,首先调用片段 B,然后调用片段 C。事实上,这正是导航组件在内部处理深层链接的方式。
我使用导航组件,在某些情况下我需要一次向前导航几步。例如 FragmentA
指向 FragmentB
,后者指向 FragmentC
。我的目标是在某些情况下直接跳转到 FragmentC
但具有正常的导航图,因此当用户从 FragmentC
返回时 he/she 出现在 FragmentB
上,就好像他出现在FragmentC
一一导航。
我发现 NavDeepLinkBuilder
可以通过以下方式解决我的问题:
val pendingIntent = NavDeepLinkBuilder(context)
.setGraph(R.navigation.my_graph)
.addDestination(R.id.fragmentA_destination,
.addDestination(R.id.fragmentB_destination)
.setComponentName(MyActivity::class.java)
.createPendingIntent()
pendingIntent.send()
它确实做了我想要的,但有 2 个问题:
- 它完成了调用activity,我不知道我是否可以阻止它完成它。
- 这似乎根本不对,因为
PendingIntent
并非设计用于在我自己的应用程序内部导航,所以我上面所做的似乎是一种 hack。
那么,如果不使用此 PendingIntent
机制,我还能如何获得相同的结果?
只需多次调用 navigate()
,首先调用片段 B,然后调用片段 C。事实上,这正是导航组件在内部处理深层链接的方式。