HarmonyOS 鸿蒙Next无法在模块或者普通类中调用自定义弹窗

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

HarmonyOS 鸿蒙Next无法在模块或者普通类中调用自定义弹窗 在移动开发中,我们不可避免需要使用模块或者自定义包,当我们把网络请求单独抽出来作为一个公共模块使用,加入想在网络请求时发起时弹一个加载中的loading,结果回来后关闭 ,但是当我在进行实践过程中发现,目前无论是LoadingProgress还是CustomDialog,都无法实现该需求。

CustomDialog需要CustomDialogController控制其打开关闭,但是CustomDialogController仅在作为@CustomDialog@Component struct的成员变量,且在@Component struct内部定义时赋值才有效。

LoadingProgress也只是作为一个组件来使用。如果单独在每次页面加载数据时通过页面弹窗也不是不行,但是麻烦不说,还很浪费精力。这肯定是不符合面向对象开发的原则,我也曾试过在UIAbility中的oncreate和onNewWant中想办法,但是也无法满足,万一页面加载完需要手动触发,还是无法实现,我也曾想过在入口顶层设计一个主窗口,需要显示loading时显示出来,但是貌似没有basePage这种做法。请教下各位老师们,有什么好的方式可以实现吗?


更多关于HarmonyOS 鸿蒙Next无法在模块或者普通类中调用自定义弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以尝试使用window窗口,在网络请求时显示window窗口,在网络请求结束时,通过Emitter通知窗口关闭。

窗口工具类参考:https://developer.huawei.com/consumer/cn/blog/topic/03152984411920042

Emitter使用参考:https://developer.huawei.com/consumer/cn/blog/topic/03152965010875041

更多关于HarmonyOS 鸿蒙Next无法在模块或者普通类中调用自定义弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以使用窗口方式实现,可以参考三方库eftool里面的WinloadingUtil,

在HarmonyOS(鸿蒙)系统中,若你遇到在模块或者普通类中无法调用自定义弹窗的问题,可能是由于以下几个原因:

  1. 资源引用问题:确保你的自定义弹窗资源(如布局文件、样式等)已被正确引用,并且路径无误。检查资源ID是否一致,避免在XML与Java(或Kotlin)代码中引用不一致。

  2. 权限问题:部分弹窗功能可能涉及系统权限,检查应用是否已申请并获得了所需的权限。

  3. 上下文(Context)问题:在调用弹窗时,确保传入的上下文(Context)是有效的。在非Activity类中调用弹窗时,可能需要传递一个有效的Activity上下文。

  4. 生命周期问题:确保在调用弹窗时,相关的Activity或Fragment仍在活动状态。如果Activity已销毁或处于不可见状态,弹窗可能无法正常显示。

  5. 代码实现问题:检查弹窗的创建和显示代码是否正确,确保没有逻辑错误或异常处理不当的情况。

如果上述检查均无误,但问题依旧存在,可能是系统或特定环境下的兼容性问题。此时,你可以尝试更新HarmonyOS SDK到最新版本,或者在不同的设备上进行测试以排除设备特定问题。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部