HarmonyOS 鸿蒙Next navigation模式为LaunchMode.POP_TO_SINGLETON 跳转后怎么获取参数?
HarmonyOS 鸿蒙Next navigation模式为LaunchMode.POP_TO_SINGLETON 跳转后怎么获取参数? 这种模式的跳转怎么传参获取参数?onReady中没获取到
试下通过订阅事件传参
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-emitter-V13#emitteron
采用无感监听的方式在onWillShow中获取也行:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-arkui-observer-V13#observeronnavdestinationupdate
更多关于HarmonyOS 鸿蒙Next navigation模式为LaunchMode.POP_TO_SINGLETON 跳转后怎么获取参数?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
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进行页面跳转时,若需要获取传递的参数,可以通过以下几种方式实现:
-
Intent传递参数:在启动目标Activity时,通过Intent的putExtra方法将参数传递给目标Activity。在目标Activity的onStart或onCreate方法中,通过getIntent().getXXXExtra方法获取传递的参数。
-
全局数据管理:利用全局变量或数据管理器(如单例模式、全局上下文等)来存储和访问数据。在跳转前将数据存储在全局管理器中,跳转后在目标Activity中从全局管理器中获取数据。
-
ViewModel共享数据:如果两个Activity在同一个任务栈中,可以考虑使用ViewModel来共享数据。ViewModel具有生命周期感知能力,可以在配置更改(如屏幕旋转)后保持数据不变,适合在多个Activity间共享数据。
请注意,POP_TO_SINGLETON模式会查找任务栈中已存在的目标Activity实例,并将其之上的所有Activity出栈。如果目标Activity实例已存在且需要更新UI或数据,确保在onNewIntent方法中处理新的Intent数据。
如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html