【HarmonyOS NEXT】Entry的Ability中是否可以loadContent另一个HSP的pages

文章讨论了如何在HarmonyOS的EntryAbility中通过loadContentByName方法从其他HSP模块加载pages,示例代码展示了如何在API11场景下使用命名路由实现,并提供了一个错误处理和成功加载内容的回调机制。
摘要由CSDN通过智能技术生成

 【关键字】

Ability / loadContent / hsp / pages / hsp module

【问题描述】

在Entry的Ability中是否可以loadContent另一个hsp的pages呢?如果可以,应该如何实现?希望在entry中只实现启动逻辑,但业务逻辑和pages都放在其他的hsp module中。

【解决方案】

API11的场景下,可以使用loadContentByName和命名路由实现,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-window-0000001820880785

样例代码:

Entry包:

//EntryAbility.ets
......
import {entryName} from 'hsplibrary'
export default class EntryAbility extends UIAbility {
......

onWindowStageCreate(windowStage: window.WindowStage) {
let storage: LocalStorage = new LocalStorage();
windowStage.loadContentByName(entryName, storage, (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
}

......
}

HSP包:

// Index.ets
export const entryName : string = 'Index';

@Entry({ routeName: entryName, storage: LocalStorage.getShared() })
@Component
struct Index {
@State message: string = 'Hello World From Hsp';

build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值