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) 
  })
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

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

分享
微博
QQ
微信
回复
2024-08-05 12:55:52
相关问题
HarmonyOS aioxs二次封装
1043浏览 • 1回复 待解决
HarmonyOS getStringByName方法二次封装
1051浏览 • 1回复 待解决
HarmonyOS 如何封装自定义弹窗
958浏览 • 1回复 待解决
HarmonyOS 自定义弹窗封装问题
921浏览 • 1回复 待解决
HarmonyOS 权限二次申请
904浏览 • 1回复 待解决
HarmonyOS 自定义弹窗封装后不显示
1247浏览 • 1回复 待解决
HarmonyOS 关于自定义弹窗封装调用
1508浏览 • 2回复 待解决
如何封装全局性的自定义弹窗
1029浏览 • 1回复 待解决
class二次刷新渲染数组
1598浏览 • 1回复 待解决
HarmonyOS cocos引擎能否二次启动
1261浏览 • 1回复 待解决
自定义弹窗如何嵌套使用
2592浏览 • 1回复 待解决
实现二次侧滑退出应用
2845浏览 • 1回复 待解决
自定义弹窗如何进一步封装
1177浏览 • 1回复 待解决
HarmonyOS 使用全局自定义弹窗
830浏览 • 1回复 待解决
使用自定义弹窗实现分享弹窗
1397浏览 • 1回复 待解决
HarmonyOS 如何封装自定义Dialog
847浏览 • 1回复 待解决