HarmonyOS鸿蒙Next中自定义弹窗(CustomDialog)封装在函数中报错
HarmonyOS鸿蒙Next中自定义弹窗(CustomDialog)封装在函数中报错 我在做业务的时候,有很多相同的弹框,想把这些弹框的初始化封装在函数中,然后通过函数进行调用,结果报错了
写法如下:
报错信息如下:
错误日志如下:
Device info:OpenHarmony 3.2
Build info:OpenHarmony 3.2.9.1
Module name:com.example.harmonymusic
Version:1.0.0
Pid:4411
Uid:20040006
Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x0000000000000290
Thread name:com.example.har
#00 pc 0000000001873b79 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#01 pc 0000000001875a71 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#02 pc 00000000003ffbf4 /system/lib64/libark_jsruntime.so (8ef042f942210dcf45c6431c798421b4)
#03 pc 00000000002dc2da /system/lib64/libark_jsruntime.so (8ef042f942210dcf45c6431c798421b4)
#04 pc 00000000002d9408 /system/lib64/libark_jsruntime.so (8ef042f942210dcf45c6431c798421b4)
#05 pc 000000000038dfb5 /system/lib64/libark_jsruntime.so (8ef042f942210dcf45c6431c798421b4)
#06 pc 0000000000400492 /system/lib64/libark_jsruntime.so(panda::FunctionRef::Call(panda::ecmascript::EcmaVM const*, panda::Local<panda::JSValueRef>, panda::Local<panda::JSValueRef> const*, int)+1058) (8ef042f942210dcf45c6431c798421b4)
#07 pc 0000000001afea72 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#08 pc 00000000018641e8 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#09 pc 000000000185d730 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#10 pc 000000000191f0d3 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#11 pc 00000000013b917a /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#12 pc 00000000013cf476 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#13 pc 013cee97 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#14 pc 00000000013d161a /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#15 pc 00000000013cc46b /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#16 pc 00000000013d2a19 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#17 pc 00000000013d1e4f /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#18 pc 00000000013d28e5 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#19 pc 00000000013cffbe /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#20 pc 00000000013d2766 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#21 pc 00000000013d1a42 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#22 pc 0000000000d9f3a9 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#23 pc 0000000000d9f09e /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#24 pc 0000000000e8079c /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#25 pc 00000000017ebe1f /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#26 pc 0000000000e32c71 /system/lib64/libace.z.so (482e7a90e9ff2e241a79a9c405a9730c)
#27 pc 0000000000010ca9 /system/lib64/platformsdk/libeventhandler.z.so(OHOS::AppExecFwk::EventHandler::DistributeEvent(std::__h::unique_ptr<OHOS::AppExecFwk::InnerEvent, void (*)(OHOS::AppExecFwk::InnerEvent*)> const&)+505) (6dd02bcdad70c6551a80ce5f415f6603)
#28 pc 000000000001ad52 /system/lib64/platformsdk/libeventhandler.z.so (6dd02bcdad70c6551a80ce5f415f6603)
#29 pc 00000000000196a8 /system/lib64/platformsdk/libeventhandler.z.so(OHOS::AppExecFwk::EventRunner::Run()+56) (6dd02bcdad70c6551a80ce5f415f6603)
#30 pc 0000000000087ce0 /system/lib64/libappkit_native.z.so(OHOS::AppExecFwk::MainThread::Start()+480) (94ca62b6337e500de1050d413f61e30c)
#31 pc 000000000001572c /system/bin/appspawn (2778b21557cf967b8bf23975a093a84f)
#32 pc 0000000000015825 /system/bin/appspawn (2778b21557cf967b8bf23975a093a84f)
#33 pc 0000000000014f7c /system/bin/appspawn (2778b21557cf967b8bf23975a093a84f)
#34 pc 000000000002c44a /system/lib64/libbegetutil.z.so (aa9b33d17515ab6026831e5e0aeb274f)
#35 pc 000000000002c173 /system/lib64/libbegetutil.z.so (aa9b33d17515ab6026831e5e0aeb274f)
#36 pc 0000000000029f85 /system/lib64/libbegetutil.z.so(ProcessEvent+85) (aa9b33d17515ab6026831e5e0aeb274f)
#37 pc 0000000000029af1 /system/lib64/libbegetutil.z.so (aa9b33d17515ab6026831e5e0aeb274f)
#38 pc 00000000000141e6 /system/bin/appspawn (2778b21557cf967b8bf23975a093a84f)
#39 pc 00000000000125ca /system/bin/appspawn (2778b21557cf967b8bf23975a093a84f)
#40 pc 0000000000090cf9 /vendor/aosp/system/lib64/libc.so(__libc_init+89) (2de37b8aa6e96dd64a6cfa51bd78ae6e)
按照官方的写法放在 @Entry @Component 进行初始化时没问题的。但是需要用到的地方都需要进行一次初始化,比较麻烦,也不能统一弹框的逻辑
请问是不能做 @Entry @Component 之外进行初始化吗
更多关于HarmonyOS鸿蒙Next中自定义弹窗(CustomDialog)封装在函数中报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
不能封装,要疯了,这比Flutter可差远了。
更多关于HarmonyOS鸿蒙Next中自定义弹窗(CustomDialog)封装在函数中报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
真的是服了,这个装饰器,搞的写一个简单的UI效果都要弯弯绕绕几圈
是因为装饰器的原因,个人感觉装饰器极大限制了编程的灵活性,不知道为啥要用这种模式。
有什么好的方案吗,
- 项目名称: 示例项目
- 项目描述: 这是一个示例项目,用于演示如何将HTML转换为Markdown。
- 开发者: 张三
- 开始日期: 2023-01-01
- 预计完成日期: 2023-12-31
参考一下flutter设计,很灵活简洁,
- 字体颜色: 深色代码主题
- 图片:
我的建议是把自定义弹窗封装到一个类,然后哪个业务用就在哪个业务里面调用就行,
装到一个类也没用吧,要用@Component装饰里面才能使用CustomDialogController,Class里用不生效,
我也遇到了相同的问题,我想在公共业务里面弹窗,但是CustomDialogController无法再非装饰器外使用,请问楼上解决了吗。
可以使用 ComponentContent
组件封装弹框,参考:
https://gitee.com/peakmain/basic-library/blob/master/library/src/main/ets/manager/dialog/DialogManager.ets
我试了用dialog.bind()可以
局限性太大了
有用正常脑回路的解决这个问题的了吗?
你按官网的示例写一个看看,这种报错窗口我弹过好次,莫名其妙的,直接关了,重启开发工具应该可以。
在HarmonyOS鸿蒙Next中封装CustomDialog时,报错可能是由于以下原因:
- 上下文未正确传递:确保在创建CustomDialog时传递了正确的
Context
对象。 - 生命周期问题:确保CustomDialog的生命周期与Activity或Fragment的生命周期同步,避免在销毁后仍进行操作。
- 资源未释放:在Dialog关闭时,确保释放相关资源,避免内存泄漏。
- UI线程问题:确保在UI线程中操作CustomDialog,避免在非UI线程中直接操作UI组件。
检查以上问题,通常可以解决自定义弹窗封装时遇到的错误。