HarmonyOS鸿蒙Next中CustomDialogController在build外面无法弹出,还报错1920,怎么回事?

HarmonyOS鸿蒙Next中CustomDialogController在build外面无法弹出,还报错1920,怎么回事?

写在struct外面弹不出来,报错 (1920)GetDecorHeight: Get app window decor height failed

3 回复

CustomDialogController仅在作为@CustomDialog@Component struct的成员变量,在@Component struct内部定义时赋值才有效。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5#customdialogcontroller

更多关于HarmonyOS鸿蒙Next中CustomDialogController在build外面无法弹出,还报错1920,怎么回事?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,CustomDialogControllerbuild方法外无法弹出并报错1920,通常是因为CustomDialogController的生命周期管理问题。CustomDialogController需要在build方法内或与UI组件绑定的上下文中使用,以确保其生命周期与UI组件同步。报错1920可能表示CustomDialogController未正确初始化或未在合适的上下文中调用。确保CustomDialogController的创建和调用在正确的UI生命周期内进行。

在HarmonyOS Next中,CustomDialogController必须在组件内部声明和使用,这是框架的设计约束。错误代码1920表明你在组件外部创建控制器导致无法获取窗口装饰高度。

正确做法是将CustomDialogController声明在struct内部,并在build方法中调用open()。例如:

@Entry
@Component
struct MyComponent {
  controller: CustomDialogController = new CustomDialogController({
    builder: CustomDialogExample({})
  });

  build() {
    Column() {
      Button('Show Dialog')
        .onClick(() => {
          this.controller.open()
        })
    }
  }
}

错误原因:

  1. 控制器需要绑定到组件生命周期
  2. 对话框渲染依赖组件树上下文
  3. 窗口高度需要在有效UI上下文中获取

请检查代码结构,确保控制器在组件内部实例化和使用。

回到顶部