HarmonyOS 鸿蒙Next A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失

HarmonyOS 鸿蒙Next A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失

A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失

可以实现类似场景么

3 回复
import { router } from '@kit.ArkUI'
[@CustomDialog](/user/CustomDialog)
struct CustomDialogExample {
  controller?: CustomDialogController
  build() {
    Column({space:5}) {
      Text('这是自定义弹窗')
        .fontSize(30)
        .height(100)
      Button('跳转').onClick(()=>{
        this.controller?.close()
        router.pushUrl({
          url: 'pages/Second',
        })
      })
      Button('点我关闭弹窗')
        .onClick(() => {
          this.controller?.close()
        })
    }
  }
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct One {
  dialogController: CustomDialogController | null = new CustomDialogController({
    builder: CustomDialogExample(),
    autoCancel: true,
    alignment: DialogAlignment.Center,
    customStyle: false,
    width: 300,
    height: 200,
    backgroundColor: Color.White,
  })
  // 在自定义组件即将析构销毁时将dialogController置空
  aboutToDisappear() {
    this.dialogController = null // 将dialogController置空
  }
  build() {
    Column() {
      Button('click me')
        .onClick(() => {
          this.dialogController?.open()
        }).backgroundColor(0x317aff)
    }.width('100%').margin({ top: 5 })
  }
} 

更多关于HarmonyOS 鸿蒙Next A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在a页面的页面隐藏生命周期里把弹窗关掉不行吗

在HarmonyOS鸿蒙系统中,当你在Dialog中执行路由跳转逻辑至页面B时,Dialog的消失通常是预期行为,因为Dialog通常作为模态窗口,在用户进行某些操作(如点击按钮)后关闭,并触发相应的逻辑(如页面跳转)。

若你希望在跳转后保持Dialog不消失,这通常不符合常规的UI设计原则,因为Dialog的目的是为用户提供临时的选择或信息,并在用户响应后关闭。然而,如果你有特殊需求,可以考虑以下思路:

  1. 使用非模态Dialog:虽然HarmonyOS标准Dialog不支持这种模式,但你可以尝试使用自定义的View或Layer来实现类似效果,通过编程控制其显示与隐藏。

  2. 延迟关闭Dialog:在跳转逻辑中,通过异步操作(如Handler或Coroutine)延迟Dialog的关闭时间,但这通常不推荐,因为它可能导致用户体验不佳。

  3. 重新设计交互:考虑是否可以通过重新设计UI交互流程来避免这种需求,例如使用底部导航栏或侧边栏菜单来实现页面间的跳转。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部