章
目
录
本文主要讲解HarmonyOS开发:动态共享包多种调用方式,包括方法调用、类的调用华为组件的调用,让我们一起来学习下吧!
1、方法调用
上述创建的共享包sharelibrary中,有一个工具类Calc,里面有一个简单的求和方法add,那么在entry中如何调用sharelibrary中的add方法呢?
其实很是简单,和Android项目一样,引入library之后,你可以调用共享包中的资源或者代码了,比如我们实现调用add方法,如下:
需要注意得是导包,正常情况下,当你打出add方法,会有提示导包,直接确认导包即可,如果没有,可以手动进行导包,导包得路径和你映射的地址基本上是一一对应的,比如,你采用的是@xx/xx的方式,导包就如下:
上面的案例是一个很简单的调用,给文字设置点击事件,直接调用共享包sharelibrary中,工具类Calc中的add方法。
目前貌似一切都没有问题,毕竟方法一切调用正常,我们直接运行至模拟器中查看,当然了,你也可以直接运行至HarmonyOS手机上,结果发现报错了,如下所示:
报错的原因就是,我们未执行部署多个包,毕竟在主模块后我们又创建了一个共享包,解决如下:
选择Deploy Multi Hap标签页,勾选Deploy Multi Hap Packages,选择我们的共享包即可:
我们点击文字之后,就可以再控制台查看到,调用add求和方法之后的值了:
2、类的调用
上面的案例是如何调用共享包中的方法,那么共享包如果有一个工具类,我们该如何调用呢?
这里我简单的创建了一个日志工具类,记住需要用export关键字进行对外暴露。
使用和上述的方法流程一致,由于设置的是静态的方法,直接调用即可:
3、组件的调用
组件的调用和类的调用是一致的,如下,我定义了一个简单的文本组件,记住使用export关键字,进行对外暴露。
@Component
export struct TextWidget {
@State message: string = '我是一个测试的文本'
build() {
Text(this.message)
.fontSize(20)
.fontWeight(FontWeight.Bold)
}
}
使用方式如下,就可以把TextWidget作为一个组件进行调用。
import { add, Log ,TextWidget} from "sharelibrary"
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
build() {
Row() {
Column() {
TextWidget()
Text($r('app.string.app_name'))
.fontSize(20)
.fontWeight(FontWeight.Bold)
.onClick(() => {
var number = add(100, 100)
Log.log("求和", ""+number)
})
}
.width('100%')
}
.height('100%')
}
}
4、跳转共享包内的页面
目前共享包中已经有了一个页面Index,为了便于区别,我们把里面的展示内容改为:“Hello sharelibrary”
在entry模块中,我们就可以如下进行跳转,url格式为:’@bundle:包名/模块名/路径/页面所在的文件名(不加.ets后缀)’,具体跳转如下:
router.pushUrl({
url: '@bundle:com.example.demo/sharelibrary/ets/pages/Index'
}).then(() => {
console.log("push page success");
}).catch(err => {
console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
})
具体效果大家可以自行演示。
5、如何使用共享包中的资源
既然作为一个共享包,要给到其他模块共用,除了代码上复用之外,剩下的就是资源了,查了很多资料和文档,怎么把resources暴露出去,这可难住了,可以很负责任的告诉大家,HarmonyOS目前还不支持,这一点和Android中Library还是有很大的区别,那怎么实现呢?
实现起来也是非常的简单,既然资源不能暴露,类和方法是可以暴露的啊,也就是大家可以把资源中的属性,通过工具类做一层中转即可。
1、定义资源
在共享包中我定义了一个很简单的字符串资源,当然了你也可以定义其他类型的资源,比如数字,图片,音视频等等。
2、定义工具类
工具类需要注意,结尾是ets类型,这是为了可以拿到Resource。
3、调用
总结
以上就是HarmonyOS开发:动态共享包多种调用方式的详解内容,希望对你有帮助。欢迎长期关注潘子夜个人博客(www.panziye.com),学习愉快哦!