HarmonyOS 鸿蒙Next Hsp中的工具类传参跳转到page页面后,如何得到目标页面的返回参数
HarmonyOS 鸿蒙Next Hsp中的工具类传参跳转到page页面后,如何得到目标页面的返回参数
可以参考如下方式实现界面切换,参数传递:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-navigation-transition-V5
使用Navigation 跳转界面 和 router跳转界面传参区别:Navigation传对象参数是传递引用,可以带上对应方法
outer传的对象是一个代理对象,会丢失源对象原型。
使用Navigation传参的示例如下,基于是上面router示例整改如下
import { Second } from './Second';
@Entry
@Component
struct Index {
@Provide('pathInfos') pathInfos: NavPathStack = new NavPathStack();
// Navigation的navDestination属性方法设置的构造函数,在路由栈变化时触发该构建数创建新的路由页面
@Builder
PageMap(name: string, paramsInfo: Uint8Array) {
Second({ params: paramsInfo })
}
build() {
Navigation(this.pathInfos) {
Row() {
Column() {
Text('Index Page')
Divider().strokeWidth(2).backgroundColor('red').margin(20)
Button('Goto Second')
.onClick(() => {
let params = new Uint8Array([0, 1]);
console.info('pushPathByName: ' + JSON.stringify(params))
this.pathInfos.pushPathByName('Second', params, (data: PopInfo) => {
console.info('data: ' + JSON.stringify(data.result)) // 这里获取到界面Pop回调结果
})
})
Divider().strokeWidth(2).backgroundColor('red').margin(20)
}
.width('100%')
}
.height('100%')
}
.navDestination(this.PageMap)
.width('100%')
.mode(NavigationMode.Auto)
.title('设置') // 设置标题文字
}
}
@Entry
@Component
export struct Second {
@Consume('pathInfos') pathInfos?: NavPathStack;
@State message: string = 'Hello World';
private params?: Uint8Array;
build() {
NavDestination() {
Row() {
Column() {
Text('Second Page')
}
.width('100%')
}
.height('100%')
}.title('Second')
// 这里需要注意,由于组件内嵌容器,所以不会回调 onPageShow 和 onPageHide,在这里挂载一个回调即可
.onShown(() => this.doPageShow())
.onHidden(() => this.doPageHide())
.onBackPressed(() => {
this.pathInfos?.pop(new Uint8Array([0, 2])); // 构造参数回传给上一个界面
return true;
})
}
aboutToAppear(): void {
console.log('aboutToAppear');
}
doPageShow(): void {
console.log('onPageShow');
console.log('0088 外层 uint8Arr', JSON.stringify(this.params));
// uint8Arr 原型链被修改
if (this.params) {
console.log('0088 内层 uint8Arr', typeof this.params, this.params instanceof Uint8Array, this.params.length)
}
}
doPageHide(): void {
console.log('onPageHide');
}
aboutToDisappear(): void {
console.log('aboutToDisappear');
}
}
更多关于HarmonyOS 鸿蒙Next Hsp中的工具类传参跳转到page页面后,如何得到目标页面的返回参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,通过Next Hsp工具类传参跳转到新页面并获取目标页面的返回参数,通常涉及以下几个步骤:
-
传参跳转:使用Next Hsp的API进行页面跳转时,可以通过Intent携带参数。确保在创建Intent时,使用
putExtra
方法将需要的参数放入Intent中。 -
目标页面接收参数:在目标页面的
onStart
或onCreate
方法中,通过getIntent()
获取传递过来的Intent,并使用getStringExtra
、getIntExtra
等方法提取参数。 -
返回参数处理:目标页面处理完业务逻辑后,如果需要返回参数给前一个页面,可以通过设置Intent的结果数据,并调用
setResult
方法。然后,通过finish
方法结束当前页面,将数据返回给启动它的页面。 -
启动页面接收返回参数:在启动页面的
onActivityResult
方法中,通过返回的Intent获取目标页面传递回来的参数。
请确保在实现过程中,正确管理Intent和页面生命周期,以避免内存泄漏或数据丢失。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html