HarmonyOS 鸿蒙Next 弹窗里面点击某个组件再次出现弹窗的问题

发布于 1周前 作者 gougou168 来自 鸿蒙OS

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() 弹出了第一个,但是第二个无论怎么样都谈不出来

2 回复

可参考以下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

回到顶部