HarmonyOS鸿蒙Next中跨hsp跳转如何传递回调函数?

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

HarmonyOS鸿蒙Next中跨hsp跳转如何传递回调函数? A hsp 跳转 B hsp ,A 如何传递给 B 1 个回调函数,B 执行完内部逻辑后回调函数给 A。

3 回复

目前跨 hsp传不了对象或者方法,建议路由时使用navigation

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-12-V5

router不支持传递回调函数,页面间通信可以使用emitter,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/itc-with-emitter-V5

更多关于HarmonyOS鸿蒙Next中跨hsp跳转如何传递回调函数?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,跨HSP(Harmony Shared Package)跳转时传递回调函数可以通过使用AbilityContext的startAbilityForResult方法实现。首先,在发起跳转的Ability中,调用startAbilityForResult方法并传入目标Ability的Intent对象和请求码。在目标Ability中,完成操作后,使用AbilityContext的setResult方法设置返回结果,并调用terminateSelf方法结束当前Ability。发起跳转的Ability通过重写onAbilityResult方法接收返回结果,并在该方法中处理回调函数。具体代码示例如下:

// 发起跳转的Ability
import Ability from '@ohos.app.ability.Ability';
import Want from '@ohos.app.ability.Want';

const REQUEST_CODE = 1;

export default class MainAbility extends Ability {
    onButtonClick() {
        let want: Want = {
            bundleName: 'com.example.target',
            abilityName: 'TargetAbility'
        };
        this.context.startAbilityForResult(want, REQUEST_CODE);
    }

    onAbilityResult(requestCode: number, resultCode: number, data) {
        if (requestCode === REQUEST_CODE) {
            if (resultCode === 0) {
                // 处理回调函数
                let result = data.parameters['result'];
                console.log('Received result: ' + result);
            }
        }
    }
}

// 目标Ability
import Ability from '@ohos.app.ability.Ability';

export default class TargetAbility extends Ability {
    onButtonClick() {
        let result = 'Callback result';
        this.context.setResult(0, {
            parameters: {
                result: result
            }
        });
        this.context.terminateSelf();
    }
}

通过这种方式,可以在跨HSP跳转时传递回调函数并处理返回结果。

在HarmonyOS鸿蒙Next中,跨HSP(HarmonyOS Shared Package)跳转时传递回调函数可以通过以下步骤实现:

  1. 定义接口:在HSP中定义一个接口,用于回调函数的声明。
  2. 实现接口:在目标HSP中实现该接口,处理回调逻辑。
  3. 传递接口实例:在跳转时,将实现了接口的实例传递给目标HSP。
  4. 调用回调:目标HSP在处理完相关逻辑后,通过接口实例调用回调函数。

这种方法确保了跨HSP的通信和回调函数的传递,同时保持了代码的模块化和可维护性。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!