HarmonyOS 鸿蒙Next怎么判断customDialog是否正在显示

发布于 1周前 作者 vueper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next怎么判断customDialog是否正在显示

【关键字】

customDialog / cancel

【问题描述】

怎么判断customDialog是否正在显示。

【解决方案】

CustomDialogControllerOptions对象中有一个参数cancel,该属性是一个回调函数且是返回、ESC键和点击遮障层弹窗退出时的回调。

具体参数信息请参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5

Demo如下:

@CustomDialog
struct CustomDialogExample {
cancel?: () => void
confirm?: () => void
controller: CustomDialogController
build() {
Column() {
Text(‘我是内容’).fontSize(20).margin({ top: 10, bottom: 10 })
Flex({ justifyContent: FlexAlign.SpaceAround }) {
Button(‘cancel’)
.onClick(() => {
this.controller.close()
if (this.cancel) {
this.cancel()
}
}).backgroundColor(0xffffff).fontColor(Color.Black)
Button(‘confirm’)
.onClick(() => {
this.controller.close()
if (this.confirm) {
this.confirm()
}
}).backgroundColor(0xffffff).fontColor(Color.Red)
}.margin({ bottom: 10 })
}
}
}
@Entry
@Component
struct CustomDialogUser {
@State isShow : boolean = false;//添加一个变量来表示当前弹窗是否在显示
dialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialogExample({
cancel: ()=> {
this.isShow = false;//开启弹窗时设置为false
this.onCancel()
console.log(this.isShow + “”)
},
confirm: ()=> {
this.isShow = false;//开启弹窗时设置为false
this.onAccept()
},
}),
cancel:() => {
this.isShow = false//返回、点击遮障层取消时改变状态变量
console.log(“点击了取消”)
}
})
onCancel() {
console.info(‘Callback when the first button is clicked’)
}
onAccept() {
console.info(‘Callback when the second button is clicked’)
}
build() {
Column() {
Button(‘click me’)
.onClick(() => {
this.isShow = true;//开启弹窗时设置为true
this.dialogController.open()
})
}.width(‘100%’).margin({ top: 5 })
}
}

1 回复

在HarmonyOS (鸿蒙) 系统中,要判断一个自定义的 customDialog 是否正在显示,通常需要依赖于你如何在代码中管理和控制这个 customDialog 的显示与隐藏。鸿蒙系统本身没有直接提供一个全局的方法来检查任意 Dialog 的显示状态,但你可以通过以下几种方式来实现或管理这一需求:

  1. 标志位控制:在你的Activity或ViewModel中设置一个布尔类型的标志位(如 isDialogShowing),在显示 customDialog 时将此标志位设为 true,在隐藏时设为 false。这样,你可以通过检查这个标志位来判断 customDialog 是否正在显示。

  2. Dialog对象状态:如果你的 customDialog 是自定义的,你可以在 Dialog 的内部状态中添加一个变量来追踪其显示状态,并对外提供一个访问方法(如 isShowing()),这样外部代码就可以调用此方法来判断 Dialog 是否正在显示。

  3. 事件监听:如果 customDialog 的显示和隐藏是通过事件触发的(如按钮点击),确保这些事件处理逻辑能够更新相应的状态标志位或通知观察者。

请注意,由于鸿蒙系统的具体实现可能与其他平台(如Android)有所不同,以上方法需要根据你的具体实现进行调整。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部