HarmonyOS鸿蒙Next中如何关闭promptAction.showDialog弹框啊!

HarmonyOS鸿蒙Next中如何关闭promptAction.showDialog弹框啊!

promptAction.showDialog({
    title: 'showDialog Title Info',
    message: 'Message Info',
    buttons: [
      {
        text: 'button1',
        color: '#000000'
      },
      {
        text: 'button2',
        color: '#000000'
      }
    ]
  }, (err, data) => {
    if (err) {
      console.error('showDialog err: ' + err);
      return;
    }
    console.info('showDialog success callback, click button: ' + data.index);
  });

我想在离开当前页面的时候关闭所有Dialog弹框,怎么弄?


更多关于HarmonyOS鸿蒙Next中如何关闭promptAction.showDialog弹框啊!的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复
  1. 获取所有对话框实例 :首先,需要有一个方法来获取或保存所有弹出的对话框实例。通过维护一个包含所有对话框实例的数组或集合来实现。

  2. 关闭对话框 :在页面销毁或用户离开页面前,遍历这个实例集合,并调用每个对话框的关闭方法。如下:

// 假设已经有一个方法来获取所有对话框实例,这里使用一个数组作为示例
let allDialogs: Array<YourDialogType> = []; // 代替为实际的对话框类型

// 在页面销毁或用户离开页面前调用此方法
function closeAllDialogs() {
    allDialogs.forEach(dialog => {
        dialog.close(); // 调用每个对话框的关闭方法
    });
}
  1. 确保资源释放 :在关闭对话框后,如果需要释放关联的资源,确保调用相应的资源释放方法,如dispose等。

更多关于HarmonyOS鸿蒙Next中如何关闭promptAction.showDialog弹框啊!的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你的问题是“我想在离开当前页面的时候关闭所有Dialog弹框,怎么弄?”,例如下面:

cke_709.png

你要关闭当前页面,操作的方法是侧滑,而侧滑的话一定会先关闭dialog,而其他的方式关闭页面也是首先会关闭dialog,再关闭当前页面的。

建议使用API18的弹窗,增加了close方法 并且api18中showDialog已经废弃。

cke_1995.png

[@ohos.promptAction (弹窗)-UI界面-ArkTS API-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-promptaction#close)

在HarmonyOS Next中关闭PromptAction.showDialog弹框,直接调用弹框对象的close方法即可。示例代码:

let dialogController: PromptAction.PromptController = null;

// 显示弹框
dialogController = PromptAction.showDialog({
  // 参数配置
});

// 关闭弹框
dialogController.close();

需要保存showDialog返回的controller对象,调用其close方法可立即关闭弹框。

在HarmonyOS Next中,可以通过以下方式关闭promptAction.showDialog弹框:

  1. 使用promptAction.showDialog返回的Dialog对象:
let dialog = promptAction.showDialog({
  // 参数配置
}, (err, data) => {
  // 回调处理
});

// 关闭弹框
dialog.close();
  1. 在页面离开时关闭所有弹框(如onPageHide生命周期):
onPageHide() {
  // 获取当前页面的所有Dialog并关闭
  getContext().closeAllDialogs();
}

注意:showDialog默认会在页面跳转时自动关闭,如果需要在特定时机手动关闭,建议保存Dialog对象引用。

回到顶部