HarmonyOS 自定义弹窗内的 close方法闪退,应该是未定义,但不知如何调整

1、按照自定义弹窗(CustomDialog)给的模板定制了一个弹窗页面。以下是 CustomDialog的代码。

@CustomDialog  
export struct CommonCenterPop {  
  cancel?: () => void  
  confirm?: () => void  
  controller: CustomDialogController

2、在Custom弹窗中的取消或确认按钮点击事件里controller.close 时应用闪退。

  .onClick(() => {  
    this.controller.close()  
    if (this.cancel) {  
      this.cancel()  
    }  
  })

3、以下是 应用页面代码。

Button('登录')  
.backgroundColor($r('app.color.base_color'))  
  .width('100%')  
  .height(40)  
  .margin({ top: 45, left: 5, right: 5 })  
  .onClick(() => {  
    let dialogController = new CustomDialogController({  
      builder: CommonCenterPop({  
        confirm: ()=> {  
        promptAction.showToast({message:'点了确认'})  
        }  
      }),  
      alignment:DialogAlignment.Center  
    })  
    dialogController.open()  
  })
HarmonyOS
2024-10-28 09:18:42
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

自定义弹窗不能在点击事件里定义,可参考以下demo:

@CustomDialog  
export default struct CommonCenterPop  {  
  controller?: CustomDialogController  
  cancel: () => void = () => {  
  }  
  confirm: () => void = () => {  
  }  
  build() {  
    Column() {  
      Text('this is CustomDialog')  
        .fontSize(16)  
        .margin({ top: 30 })  
      Flex({ justifyContent: FlexAlign.SpaceAround }) {  
        Button('cancel')  
          .onClick(() => {  
            if (this.controller != undefined) {  
              this.controller.close()  
              this.cancel()  
            }  
          }).backgroundColor(0xffffff).fontColor(Color.Black)  
        Button('confirm')  
          .onClick(() => {  
            if (this.controller != undefined) {  
              this.controller.close()  
              this.confirm()  
            }  
          }).backgroundColor(0xffffff).fontColor(Color.Red)  
      }.margin({ top: 200 })  
    }  
    .borderRadius(10)  
    .height(300)  
  }  
}

在应用页面。

import CommonCenterPop from '../pages/CustomDialog'  
//定义CustomDialog  
customDialogController:CustomDialogController | null = new CustomDialogController({  
    builder: CommonCenterPop({  
      cancel:() => {  
      },  
      confirm:() => {  
      }  
    }),  
    autoCancel: true,  
    alignment: DialogAlignment.Center,  
    customStyle: false,  
    cornerRadius: 10,  
  })

调用:

.onClick(() => {  
  if (this.customDialogController != null) {  
    this.customDialogController.open()  
  }  
})
分享
微博
QQ
微信
回复
2024-10-28 16:37:47
相关问题
HarmonyOS项目字段未定义问题
464浏览 • 1回复 待解决
自定义弹窗自定义转场动画
1152浏览 • 1回复 待解决
目前项目有很多未定义崩溃
190浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
706浏览 • 1回复 待解决
HarmonyOS 自定义弹窗选择
372浏览 • 1回复 待解决
自定义弹窗如何嵌套使用
1687浏览 • 1回复 待解决
如何自定义弹窗中再次弹窗
2287浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗demo
293浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog问题
616浏览 • 1回复 待解决
HarmonyOS 使用全局自定义弹窗
38浏览 • 1回复 待解决
如何自定义popup弹窗布局?
440浏览 • 2回复 待解决
HarmonyOS 弹窗样式能否支持自定义
43浏览 • 1回复 待解决