首页 > 解决方案 > 当通过导航组件的深层链接打开片段而不是返回到开始目标片段时,在返回按钮上关闭应用程序

问题描述

例如,我有两个片段:

当我从电子邮件打开链接时,它会打开我的应用程序活动(如果已经打开,则重新创建它),然后打开开始目标片段,然后打开深层链接片段,当我按下返回按钮时,它会返回开始目标片段,但我不想要这样行为,我希望它改为关闭应用程序,因此片段深层链接表现为起始目标片段

标签: androidandroid-architecture-navigationandroid-navigationandroid-deep-link

解决方案


您可以通过多种方式执行此操作:

  1. 如果您可以更改起始目的地,请使用深度链接片段作为起始目的地,但我猜您的起始目的地中有一些逻辑,并希望在指定条件下以编程方式导航到深度链接。在这种情况下,此解决方案不适用。

  2. 通过在以编程方式导航到深度链接之前弹出回栈:

   // remove start destination fragment
   findNavController().popBackStack()
   findNavController().navigate(Uri.parse(<your_deeplink>))
  1. 通过杀死深层链接片段中的活动。在fragment中监听onBackPressDispatcher,从fragment中调用requireActivity().finish()杀死Activity。这篇中篇文章详细解释了onBackPressDispatcher回调。

推荐阅读