android - 使用 NavDeepLinkBuilder 构建片段回栈
问题描述
我有一个单一的活动应用程序,具有三个片段,A,B,C。在正常的应用程序流程中,片段按顺序打开:A->B->CI 有一个前台服务,带有一个通知,单击时应该打开片段C. 我使用导航架构组件,并将目的地作为深度链接添加到通知中:
NotificationCompat.Builder(context, NOTIFICATION_CHANNEL)
....
.setContentIntent(NavDeepLinkBuilder(context)
.setGraph(R.navigation.main_navigation)
.setDestination(R.id.fragmentC)
.setArguments(bundle)
.createPendingIntent())
.build()
片段回栈未构建。当我从片段 C 导航回来时,我立即到达片段 A,而不是 B。根据导航原则,后台堆栈应该是自然的,但我似乎无法实现这一点。我在这里想念什么?谢谢你。
解决方案
我通过将我的导航图重构为嵌套图来实现所需的后台堆栈。正如在NavDeepLinkBuilder 参考“目的地及其所有父级都将在后堆栈上”中提到的那样,以及“目的地的父级是包含导航图的起始目的地”。
这两者一起意味着后台堆栈将包含深度链接目的地所在的所有嵌套导航图的起始目的地。
最初,我有一个没有嵌套的导航图,我唯一的 backstack 项目是该图的起始目的地。当我将导航图重构为由主(外部)导航图和嵌套图组成时,后台堆栈由两个图的起始目的地组成。
推荐阅读
- javascript - React:遍历深度嵌套的对象并显示它们而不会扯掉我的头发
- javascript - 如何使用 DOM 更改表中单行的背景颜色
- jquery - Ajax 没有获取 api 数据但浏览器 api 正在工作
- javascript - IE - TypeError:无法获取未定义或空引用的属性“匹配”
- python - 在python3中进行JSON序列化后进程内存未释放
- python - python中的自引用列表?
- rust - 为什么 MutexGuard 在结构中需要生命周期参数,但在函数返回类型中不需要?
- javascript - 如何使用脚本打开网站并单击按钮或执行其他操作?
- git - Git commit:禁用打开编辑器
- python - 让 python 进度条在 cygwin 中正常运行