HarmonyOS 鸿蒙Next:如何将class的事件回调给界面

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

HarmonyOS 鸿蒙Next:如何将class的事件回调给界面

网页会调用JsToJavaOnCreate,如何将class里的isCreate通知到CameraPage里的isCreate,我添加@Link报错了。
@Component
@Entry
struct CameraPage {
private controller: WebviewController = new webview.WebviewController()
@State link: string = ‘https:’
@State isCreate: boolean = false
@State javaObj: javaClass = new javaClass();

build() {
Stack() {
Web({ src: this.link, controller: this.controller })
.mixedMode(MixedMode.All)
.backgroundImage($r(‘app.media.background’))
.width(“100%”)
.height(“100%”)
.javaScriptAccess(true)
.domStorageAccess(true)
.fileAccess(true)
.imageAccess(true)
.onlineImageAccess(true)
.zoomAccess(true)
.overviewModeAccess(true)
.databaseAccess(true)
.geolocationAccess(true)
.multiWindowAccess(true)
.mediaPlayGestureAccess(true)
.blockNetwork(false)
.pinchSmooth(true)
.javaScriptProxy({
object: this.javaObj,
name: “android”,
methodList: [‘JsToJavaOnCreate’],
controller: this.controller
})

}
}
}

class javaClass {
isCreate: boolean = false

constructor() {
}

JsToJavaOnCreate(): string {
this.isCreate = true
return ‘’;
}
}

2 回复

在new javaClass()时,写成new javaClass(getContext(this))

然后在JsToJavaOnCreate里可以使用context.eventHub

在HarmonyOS(鸿蒙)开发中,将class中的事件回调给界面通常涉及几个步骤:

  1. 定义回调接口:在class中定义一个接口,该接口包含需要回调的方法。
  2. 界面实现接口:在界面(Page或Component)中实现这个接口。
  3. 传递接口实例:在创建class实例时,将界面(已实现接口的实例)作为参数传递给class。
  4. 触发回调:在class中适当的位置(如事件发生时),调用接口中的方法,实现回调。

确保在class和界面之间正确传递接口实例,并正确管理生命周期,避免内存泄漏。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部