鸿蒙中 @ohos.promptAction 模块下有哪些常用API

本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、showToast - 文本提示框

功能:显示短暂的消息提示,自动消失。

核心参数

  • message(必填):提示文本(string | Resource类型)。
  • duration:显示时长(默认1500ms,范围1500-10000ms)。
  • bottom:距离屏幕底部的距离(默认80vp)。
  • alignment:对齐方式(如Alignment.Center)。
  • backgroundColor/textColor:背景和文字颜色。

示例代码

import { promptAction } from '@kit.ArkUI';

@Entry
@Component
struct ToastExample {
  build() {
    Column() {
      Button('显示Toast')
        .onClick(() => {
          promptAction.showToast({
            message: '操作成功',
            duration: 2000,
            bottom: 100,
            backgroundColor: '#4CAF50',
            textColor: '#FFFFFF'
          });
        })
    }
  }
}

注意:不支持在UIAbility生命周期中直接调用,需在组件内使用。

二、showDialog - 对话框

功能:显示带按钮的对话框,支持同步/异步返回结果。

核心参数

  • title:对话框标题。
  • message:内容文本。
  • buttons:按钮数组(最多3个),可设置文本和颜色。
1. 同步返回(Promise)
promptAction.showDialog({
  title: '确认删除',
  message: '确定删除此文件吗?',
  buttons: [
    { text: '取消', color: '#999999' },
    { text: '删除', color: '#FF0000' }
  ]
}).then(data => {
  console.info('点击按钮索引:', data.index); // 0或1
});

2. 异步返回(Callback)

promptAction.showDialog({
  title: '提示',
  message: '异步对话框示例',
  buttons: [{ text: '确定' }]
}, (err, data) => {
  if (err) return;
  console.info('点击按钮索引:', data.index);
});

适用场景:需用户确认的操作(如删除退出)。

三、showActionMenu - 操作菜单

功能:显示底部弹出菜单,支持多选项。

核心参数

  • title:菜单标题(可选)。
  • buttons:菜单项数组,每个项可设置文本和颜色。

示例代码

promptAction.showActionMenu({
  title: '选择操作',
  buttons: [
    { text: '拍照', color: '#000000' },
    { text: '从相册选择', color: '#000000' },
    { text: '取消', color: '#FF0000' }
  ]
}).then(data => {
  console.info('选择项索引:', data.index);
});

注意:菜单项超过3个时会自动滚动。

四、openCustomDialog - 自定义弹窗

功能:完全自定义弹窗内容,支持复杂UI布局。

核心参数

  • builder:使用@Builder装饰器定义的自定义组件。
  • alignment:弹窗对齐方式(如DialogAlignment.Center)。
  • isModal:是否模态(阻止背景交互)。

示例代码

@Entry
@Component
struct CustomDialogExample {
  @Builder
  customDialog() {
    Column() {
      Text('自定义弹窗').fontSize(20)
      Button('关闭').onClick(() => {
        promptAction.closeCustomDialog(this.dialogId);
      })
    }
  }

  private dialogId: number = 0;

  build() {
    Column() {
      Button('打开自定义弹窗')
        .onClick(() => {
          promptAction.openCustomDialog({
            builder: () => this.customDialog(),
            alignment: DialogAlignment.Bottom
          }).then(id => this.dialogId = id);
        })
    }
  }
}

适用场景:需个性化设计的弹窗(如登录框广告)。

五、封装工具类(高级用法)

可参考以下设计封装全局弹窗工具类:

  1. 生成唯一ID:避免弹窗冲突。
  2. 链式调用:支持动态配置属性(如对齐方式背景模糊)。
  3. 生命周期回调:监听弹窗显示/隐藏事件。

示例片段

class PromptUtil {
  static showCustomDialog(builder: () => void) {
    const dialogId = generateUniqueId();
    promptAction.openCustomDialog({ builder })
      .then(id => {
        // 管理弹窗ID
      });
  }
}

优势:统一管理弹窗逻辑,提升代码复用性。

六、注意事项

  1. 上下文限制:不可在UIAbility生命周期中直接调用,需通过组件触发 。
  2. 错误处理:使用try-catch捕获参数错误(如401错误码)。
  3. 版本兼容:部分API从特定版本开始支持(如showActionMenu需API 10+)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值