HarmonyOS 鸿蒙Next navigation模式为LaunchMode.POP_TO_SINGLETON 跳转后怎么获取参数?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next navigation模式为LaunchMode.POP_TO_SINGLETON 跳转后怎么获取参数? 这种模式的跳转怎么传参获取参数?onReady中没获取到

5 回复

更多关于HarmonyOS 鸿蒙Next navigation模式为LaunchMode.POP_TO_SINGLETON 跳转后怎么获取参数?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


项目名称

  • 状态:已发布
  • 技术栈:Python, JavaScript
  • 项目链接项目链接
  • 项目简介:这是一个示例项目,用于演示如何将HTML内容转换为Markdown格式。

LaunchMode.POP_TO_SINGLETON 本质上就是 pop 回之前的页面了,其实本质上并不是 push 操作,我之前都提过工单,不知道华为什么这么设计,提工单也不改进

我方法是在当前页面的 onPageShow 里面通过 getParamsByIndex 那个方法获取当前页面的参数

1、在跳转到的目标页的 onReady中保存NavDestinationContext,执行:

this.context = context

2、使用LaunchMode.POP_TO_SINGLETON模式跳转,如果stack中存在实例,onReady不会回调,但会回调onWillShow或者onShow么,在方法里执行

const params = this.context?.pathInfo.param

获取传入的param参数

在HarmonyOS鸿蒙系统中,当使用Next navigation模式并设置LaunchMode为POP_TO_SINGLETON进行页面跳转时,若需要获取传递的参数,可以通过以下几种方式实现:

  1. Intent传递参数:在启动目标Activity时,通过Intent的putExtra方法将参数传递给目标Activity。在目标Activity的onStart或onCreate方法中,通过getIntent().getXXXExtra方法获取传递的参数。

  2. 全局数据管理:利用全局变量或数据管理器(如单例模式、全局上下文等)来存储和访问数据。在跳转前将数据存储在全局管理器中,跳转后在目标Activity中从全局管理器中获取数据。

  3. ViewModel共享数据:如果两个Activity在同一个任务栈中,可以考虑使用ViewModel来共享数据。ViewModel具有生命周期感知能力,可以在配置更改(如屏幕旋转)后保持数据不变,适合在多个Activity间共享数据。

请注意,POP_TO_SINGLETON模式会查找任务栈中已存在的目标Activity实例,并将其之上的所有Activity出栈。如果目标Activity实例已存在且需要更新UI或数据,确保在onNewIntent方法中处理新的Intent数据。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部