HarmonyOS 鸿蒙Next 弹窗里面点击某个组件再次出现弹窗的问题
HarmonyOS 鸿蒙Next 弹窗里面点击某个组件再次出现弹窗的问题
我有两个弹窗这里叫A,和B,在A里面点击一个按钮弹出B,这个时候A也是不关闭的,但是我点击A中的按钮无论怎么做都是重新弹出一个A,B不出现,相当于A出现两次,不知道为啥,我用这个地址 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/ts-methods-custom-dialog-box-V13 中的例子 是可以弹窗的,但是我自己随便写的弹窗不能弹出,不知道为啥,我的两个弹窗类在附件的zip文件中,在随便一个页面中
dialogController: CustomDialogController = new CustomDialogController({ builder: LogoutConfirmDialog({ cancel: this.onCancel, confirm: this.onAccept, }), autoCancel: true, alignment: DialogAlignment.Center, }) 点击按钮调用了this.dialogController.open() 弹出了第一个,但是第二个无论怎么样都谈不出来
可参考以下demo:
// 弹窗组件
[@CustomDialog](/user/CustomDialog)
struct MyDialog1 {
controller2: CustomDialogController
controller1: CustomDialogController
title: string=''
build() {
Row() {
Column({ space: 10 }) {
Text(this.title)
.fontSize(30)
.fontColor(Color.Blue)
Button('点击打开弹窗2')
.onClick(() => {
this.controller2.open()
}).backgroundColor(0xffffff).fontColor(Color.Red)
Flex({ justifyContent: FlexAlign.SpaceAround }) {
Button('cancel')
.onClick(() => {
this.controller1.close()
}).backgroundColor(0xffffff).fontColor(Color.Black)
}.width("100%")
}.width("50%")
}.height("50%")
}
}
// 弹窗组件
[@CustomDialog](/user/CustomDialog)
struct MyDialog2 {
controller: CustomDialogController
title: string=''
build() {
Row() {
Column({ space: 10 }) {
Text(this.title)
.fontSize(30)
.fontColor(Color.Blue)
Flex({ justifyContent: FlexAlign.SpaceAround }) {
Button('cancel')
.onClick(() => {
this.controller.close()
}).backgroundColor(0xffffff).fontColor(Color.Black)
Button('confirm')
.onClick(() => {
this.controller.close()
}).backgroundColor(0xffffff).fontColor(Color.Red)
}.width("100%")
}.margin({ bottom: 10 })
}.height("50%")
}
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct DialogTest {
[@State](/user/State) dialogTitle: string = ''
[@State](/user/State) dialogData: string = ''
dialogController2: CustomDialogController = new CustomDialogController({
builder: MyDialog2({
title: '弹窗2',
}),
customStyle: false
})
dialogController1: CustomDialogController = new CustomDialogController({
builder: MyDialog1({
controller2: this.dialogController2,
title: '弹窗1',
}),
customStyle: false
})
build() {
Row() {
Column({ space: 10 }) {
Button('点击打开弹窗1')
.onClick(() => {
this.dialogController1.open()
})
}.width("100%")
}.height("100%")
}
}
在HarmonyOS鸿蒙Next中,实现弹窗里面点击某个组件再次出现弹窗的功能,可以通过以下步骤进行:
首先,需要创建两个自定义弹窗,并使用@CustomDialog装饰器进行装饰。在第一个弹窗中,设置一个按钮,并为该按钮添加点击事件。在点击事件的处理函数中,通过调用第二个弹窗的CustomDialogController的open方法,来打开第二个弹窗。
其次,确保第二个弹窗的CustomDialogController已经被正确初始化,并且可以在第一个弹窗中被访问到。这通常是通过将第二个弹窗的CustomDialogController作为属性或者通过某种方式传递给第一个弹窗来实现的。
最后,测试弹窗功能,确保在点击第一个弹窗中的按钮时,能够正确地打开第二个弹窗。
如果在实现过程中遇到任何问题,比如弹窗无法打开、点击事件无效等,可以检查以下几点:
- 确保CustomDialogController已经正确初始化。
- 确保点击事件已经正确绑定到按钮上。
- 确保第二个弹窗的CustomDialogController在第一个弹窗中是可访问的。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html