【HarmonyOS 鸿蒙Next API9项目升级问题记录】promptAction.showToast在真机上使用没问题,在预览器里通过工具类调用会报错UI execution context not found.

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

【HarmonyOS 鸿蒙Next API9项目升级问题记录】promptAction.showToast在真机上使用没问题,在预览器里通过工具类调用会报错UI execution context not found.

promptAction.showToast在真机上使用没问题,在预览器里通过工具类调用会报错UI execution context not found.

cke_454.png

11 回复
有谁知道这个啥问题吗

应该是context的获取写在了自己封装的非page页面了,api11中的this不再指代所使用的页面中的this了。 建议在封装的工具类里写个方法,然后在使用的page页里把this或直接context传过去 参考:https://developer.huawei.com/consumer/cn/forum/topic/0203148294027705369?fid=0109140870620153026

对的,我遇到了同样的错误。如果只是单纯的按钮直接调用时没问题的。

而且我在一部请求前调用也是没问题的。

我在按钮中有一个异步的http请求后,就会报这个错误

应该是context的获取写在了自己封装的非page页面了,api11中的this不再指代所使用的页面中的this了。 建议在封装的工具类里写个方法,然后在使用的page页里把this或直接context传过去 参考:https://developer.huawei.com/consumer/cn/forum/topic/0203148294027705369?fid=0109140870620153026

[@zhongcx](/user/zhongcx)  上面的可以执行,下面这个就报错了 

cke_131.png

你的context获取方式好像不对,试试 let context : common.UIAbilityContext =getContext(this) as common.UIAbilityContext

let context : common.UIAbilityContext =getContext(this) as common.UIAbilityContext 这个对象上好像没这个方法 getPromptAction

试试这样

@Entry @Component struct Page108 {

aboutToAppear(): void { getContext(this).eventHub.on(‘1’, (data: string) => { let context: UIContext = this.getUIContext() as UIContext let test = context.getPromptAction() test.showToast({ message: data }) });

}

build() { Column() { Button(‘测试’).onClick(async()=>{ getContext(this).eventHub.emit(‘1’, ‘测试111’); // await login setTimeout(()=>{ getContext(this).eventHub.emit(‘1’, ‘测试2222’); },2000) }) } .width(‘100%’) .height(‘100%’) } }

我曹,,你太牛逼了。感谢。

直接这样就可以解决

promptAction.showToast 在真机上正常,但在预览器中报错“UI execution context not found”通常是因为预览器环境不支持完整的UI上下文或某些特定API的模拟。HarmonyOS的预览器可能主要用于界面布局和静态资源的预览,而不完全模拟设备的运行时环境。

请确保在预览器环境中不执行依赖于真实UI上下文的代码,或者通过条件编译来区分开发环境和生产环境。此外,检查你的项目配置是否支持在预览器中正确加载必要的库和依赖。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部