问题描述
例如我有两个片段:
- 用作我的导航图的起始目的地的起始片段
- 用于深层链接的片段
当我打开电子邮件中的链接时,它会打开我的应用程序活动(如果已经打开,则重新创建它),然后打开开始目标片段,然后打开深层链接片段,当我按下后退按钮时,它会返回开始目标片段,但我没有不想要这种行为,我希望它关闭应用程序,因此片段深层链接表现为起始目标片段
解决方法
您可以通过多种方式执行此操作:
-
如果您可以更改起始目的地,请使用深层链接片段作为起始目的地,但我猜您的起始目的地中有一些逻辑,并且希望在指定条件下以编程方式导航到深层链接。在这种情况下,此解决方案不适用。
-
在以编程方式导航到深层链接之前弹出 backstack:
// remove start destination fragment
findNavController().popBackStack()
findNavController().navigate(Uri.parse(<your_deeplink>))
- 通过终止来自深层链接片段的活动。侦听片段中的 onBackPressDispatcher,并从片段中调用
requireActivity().finish()
以终止 Activity。此 medium post 详细解释了onBackPressDispatcher
回调。