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

问题描述

例如我有两个片段:

  • 用作我的导航图的起始目的地的起始片段
  • 用于深层链接的片段

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

解决方法

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

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

  2. 在以编程方式导航到深层链接之前弹出 backstack:

   // remove start destination fragment
   findNavController().popBackStack()
   findNavController().navigate(Uri.parse(<your_deeplink>))
  1. 通过终止来自深层链接片段的活动。侦听片段中的 onBackPressDispatcher,并从片段中调用 requireActivity().finish() 以终止 Activity。此 medium post 详细解释了 onBackPressDispatcher 回调。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...