android - 当通过导航组件的深层链接打开片段而不是返回到开始目标片段时,在返回按钮上关闭应用程序
问题描述
例如,我有两个片段:
- 起始片段,用作我的导航图的起始目的地
- 深层链接的片段
当我从电子邮件打开链接时,它会打开我的应用程序活动(如果已经打开,则重新创建它),然后打开开始目标片段,然后打开深层链接片段,当我按下返回按钮时,它会返回开始目标片段,但我不想要这样行为,我希望它改为关闭应用程序,因此片段深层链接表现为起始目标片段
解决方案
您可以通过多种方式执行此操作:
如果您可以更改起始目的地,请使用深度链接片段作为起始目的地,但我猜您的起始目的地中有一些逻辑,并希望在指定条件下以编程方式导航到深度链接。在这种情况下,此解决方案不适用。
通过在以编程方式导航到深度链接之前弹出回栈:
// remove start destination fragment
findNavController().popBackStack()
findNavController().navigate(Uri.parse(<your_deeplink>))
- 通过杀死深层链接片段中的活动。在fragment中监听onBackPressDispatcher,从fragment中调用
requireActivity().finish()
杀死Activity。这篇中篇文章详细解释了onBackPressDispatcher
回调。
推荐阅读
- macos - -bash: minikube: 找不到命令
- python - Python 多处理保存文件
- ruby - 尝试设置 ReactNative 项目但很难安装 CocoaPods
- ruby-on-rails - 更新 json 列中的单个属性会触发完整的列更新
- function - 通过循环从函数导入到单个数据帧
- python-3.x - 我正在尝试使用官方python页面上列出的turtle方法等,但我不断收到错误
- c# - EF Core 3 Linq 无法翻译
- flutter - 如何在打开键盘之前造成延迟?
- c# - 使用 ISerializable 接口的 WCF 序列化
- java - 如何添加 priceAfterDiscount 的公共方法,该方法返回折扣后的价格