在HarmonyOS NEXT开发中pushDestinationByName下个界面返回时候怎么回传值?
在HarmonyOS NEXT开发中pushDestinationByName下个界面返回时候怎么回传值?
在HarmonyOS NEXT开发中,通过pushDestinationByName
跳转界面后回传值,可通过以下两种方式实现:
// 源页面发送跳转请求
import { AbilityResult } from '@ohos.app.ability.UIAbility';
let want = {
bundleName: "com.example.target",
abilityName: "TargetAbility",
parameters: { key: "value" } // 可选:传递参数到目标页面
};
// 通过 startAbilityForResult 发起带返回值的跳转
this.context.startAbilityForResult(want).then((result: AbilityResult) => {
if (result.resultCode === 0) {
let returnedData = result.want?.parameters?.returnKey; // 获取回传值
console.log("Received data: " + returnedData);
}
});
// 目标页面返回时设置返回值
let resultWant = {
parameters: { returnKey: "回传的数据" }
};
this.context.terminateSelfWithResult({ resultCode: 0, want: resultWant });
// 源页面订阅事件
import { eventHub } from '@ohos.app.ability.UIAbility';
eventHub.on("returnEvent", (data) => {
console.log("Received data: " + data);
});
// 跳转页面
let want = {
bundleName: "com.example.target",
abilityName: "TargetAbility"
};
this.context.startAbility(want);
// 目标页面返回前触发事件
eventHub.emit("returnEvent", "回传的数据");
this.context.terminateSelf();
pushDestinationByName
(基于动态路由),建议优先采用 AbilityResult
方式。terminateSelfWithResult
主动回传值。
解决方法: