HarmonyOS 自定义弹窗如何二次封装和使用

目前自定义弹窗都是通过@CustomDialog 修饰,传入弹窗内容,然后构建UI和取消确认等方法,使用的方式是在@Entry修饰的页面中new CustomDialogController, 然后把自定义弹窗的builder传进去,在页面某个事件通过 open()调用。

如果一个页面有多个弹窗,提示内容不一样,不同的提示有不同的点击动作,是否能通过二次封装的形势,在其他ets文件中传入提示内容和点击事件的回调呢?目前尝试过,通过其他组件或者方法初始化并返回CustomDialogController ,在页面open()闪退了。

HarmonyOS
2024-08-04 18:22:17
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
kraml

建议使用promptAction.openCustomDialog接口,全局调用自定义弹窗,请参考下面代码:

let customDialogId: number = 0 
export function globalDialog() { 
  let customDialog: CustomDialogController = new CustomDialogController({ 
    builder: OptionDialog({ 
    }), 
    alignment: DialogAlignment.Bottom, 
    customStyle: true, 
    offset: { 
      dx: 0, 
      dy: -20 
    } 
  }) 
  customDialog.open() 
} 
onClick: () => { 
  promptAction.openCustomDialog({ 
    builder:showCustomDialog.bind(this) 
  }).then((dialogId: number) => { 
    customDialogId = dialogId; 
  }) 
} 
  //确认/取消弹窗 
  .onClick(() => { 
    promptAction.closeCustomDialog(customDialogId) 
  })

CustomDialogController仅在作为@CustomDialog和@Component struct的成员变量,且在@Component struct内部定义时赋值才有效,如果定义再非struct打开自定义弹窗会导致程序异常退出。

分享
微博
QQ
微信
回复
2024-08-05 12:55:52
相关问题
自定义弹窗如何嵌套使用
843浏览 • 1回复 待解决
class二次刷新渲染数组
491浏览 • 1回复 待解决
使用自定义弹窗实现分享弹窗
178浏览 • 1回复 待解决
HarmonyOS cocos引擎能否二次启动
141浏览 • 1回复 待解决
自定义弹窗使用相关问题
630浏览 • 1回复 待解决
自定义弹窗自定义转场动画
654浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog问题
166浏览 • 1回复 待解决
HarmonyOS 自定义弹窗的问题
225浏览 • 1回复 待解决
如何自定义弹窗中再次弹窗
1877浏览 • 1回复 待解决
实现二次侧滑退出应用
1535浏览 • 1回复 待解决
如何设置自定义弹窗位置
1728浏览 • 1回复 待解决
HarmonyOS 自定义弹窗遮罩未全屏
129浏览 • 1回复 待解决
如何自定义popup弹窗的布局?
193浏览 • 2回复 待解决