HarmonyOS 鸿蒙Next dialog如何close?
HarmonyOS 鸿蒙Next dialog如何close?
如下:this.controller.close 直接崩溃?
@CustomDialog
export struct ViewBoardCustomDialog {
controller: CustomDialogController = new CustomDialogController({ builder: ViewBoardCustomDialog() })
onStart: (isReadOnly: boolean) => void = (isReadOnly: boolean) => {
}
build() {
Column() {
Button("创建只读白板").onClick(e => {
this.onStart(true);
}).margin({ top: 10, bottom: 10 })
Button("创建读写白板").onClick(e => {
this.onStart(false);
}).margin({ top: 10, bottom: 10 })
}
}
}
更多关于HarmonyOS 鸿蒙Next dialog如何close?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
麻烦试一下这个demo:
[@CustomDialog](/user/CustomDialog)
struct CustomDialogExample {
controller?: CustomDialogController
cancel: () => void = () => {
}
confirm: () => void = () => {
}
build() {
Column() {
Text('可展示在主窗口外的弹窗')
.fontSize(30)
.height(100)
Button('点我关闭弹窗')
.onClick(() => {
if (this.controller != undefined) {
this.controller.close()
console.log('关闭成功')
}
else{
console.log('关闭失败')
}
})
.margin(20)
}
}
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct CustomDialogUser {
dialogController: CustomDialogController | null = new CustomDialogController({
builder: CustomDialogExample({
cancel: ()=> { this.onCancel() },
confirm: ()=> { this.onAccept() }
}),
cancel: this.existApp,
autoCancel: true,
alignment: DialogAlignment.Center,
offset: { dx: 0, dy: -20 },
gridCount: 4,
showInSubWindow: true,
isModal: true,
customStyle: false,
cornerRadius: 10,
})
// 在自定义组件即将析构销毁时将dialogControlle置空
aboutToDisappear() {
this.dialogController = null // 将dialogController置空
}
onCancel() {
console.info('Callback when the first button is clicked')
}
onAccept() {
console.info('Callback when the second button is clicked')
}
existApp() {
console.info('Click the callback in the blank area')
}
build() {
Column() {
Button('click me')
.onClick(() => {
if (this.dialogController != null) {
this.dialogController.open()
}
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
更多关于HarmonyOS 鸿蒙Next dialog如何close?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙系统)中,关闭对话框(Dialog)的操作通常涉及调用Dialog对象的相应方法。如果你正在使用Java或Kotlin进行开发,关闭Dialog的通用方法是通过调用其dismiss()
方法。以下是一个简要的步骤说明和示例代码:
-
获取Dialog对象:确保你已经创建并显示了Dialog对象。
-
调用dismiss方法:在需要关闭Dialog的地方,调用该对象的
dismiss()
方法。
示例代码(Java):
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Message")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 关闭Dialog
dialogInterface.dismiss();
}
})
.create();
dialog.show();
// 如果需要在其他地方关闭Dialog,可以直接调用
// dialog.dismiss();
在Kotlin中,操作类似,只是语法略有不同。
如果Dialog是通过某种框架或库创建的,确保查阅该框架或库的文档,以了解是否有特定的关闭方法或生命周期管理要求。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html