HarmonyOS ArkTS 基于CommonDialog实现自定义AlertDialog

在鸿蒙系统(HarmonyOS)中,CommonDialog 是一个用于显示对话框的组件,类似于 Android 的 AlertDialog。如果你想在鸿蒙系统中使用 ArkTS 自定义一个 AlertDialog,你可以基于 CommonDialog 实现。

步骤 1:创建自定义 AlertDialog 组件

首先,我们需要创建一个自定义的 AlertDialog 组件,继承并包装 CommonDialog。可以自定义对话框的标题、内容、按钮等。

步骤 2:实现自定义 AlertDialog

我们将创建一个自定义的 AlertDialog 组件,并提供简单的弹出和关闭功能。

示例代码
import ui from '@ohos.ui';
import dialog from '@ohos.dialog';/*** 自定义 AlertDialog 组件*/
export default class CustomAlertDialog {private dialog: dialog.CommonDialog | null = null;// 构建对话框build(title: string, message: string, onConfirm: () => void, onCancel: () => void) {this.dialog = new dialog.CommonDialog();// 设置对话框标题和内容this.dialog.setTitle(title);this.dialog.setMessage(message);// 设置确认按钮this.dialog.setButtonText(dialog.CommonDialog.ButtonType.POSITIVE, '确定');this.dialog.setButtonClickListener(dialog.CommonDialog.ButtonType.POSITIVE, () => {onConfirm();this.dialog?.close();});// 设置取消按钮this.dialog.setButtonText(dialog.CommonDialog.ButtonType.NEGATIVE, '取消');this.dialog.setButtonClickListener(dialog.CommonDialog.ButtonType.NEGATIVE, () => {onCancel();this.dialog?.close();});// 显示对话框this.dialog.show();}// 关闭对话框close() {this.dialog?.close();}
}
代码解释
  1. 创建 CustomAlertDialog:该类封装了 CommonDialog,提供一个 build 方法来定制对话框的标题、内容和按钮。

  2. build 方法

    • setTitle 设置对话框的标题。
    • setMessage 设置对话框的消息内容。
    • setButtonText 设置按钮文本。这里分别为“确定”和“取消”按钮设置文本。
    • setButtonClickListener 设置按钮的点击事件回调。分别为“确定”和“取消”按钮设置不同的回调事件。
    • show 显示对话框。
  3. close 方法:关闭对话框。

步骤 3:在主界面使用 CustomAlertDialog

接下来,我们可以在主界面或其他页面中调用自定义的 AlertDialog,例如在点击按钮时弹出对话框。

示例主界面代码
import ui from '@ohos.ui';
import CustomAlertDialog from './CustomAlertDialog';export default class MainPage {private customAlertDialog: CustomAlertDialog = new CustomAlertDialog();build() {return (<StackLayout><Text value="点击按钮弹出自定义 AlertDialog" fontSize={30} textAlign="center" /><Button onClick={this.showDialog.bind(this)}><Text value="显示对话框" fontSize={30} /></Button></StackLayout>);}// 显示自定义的 AlertDialogshowDialog() {this.customAlertDialog.build('提示','这是一条自定义的消息内容。',() => {console.log('用户点击了确定');},() => {console.log('用户点击了取消');});}
}
代码解释
  1. 创建 CustomAlertDialog 实例:在 MainPage 类中创建一个 CustomAlertDialog 的实例。

  2. showDialog 方法:点击按钮时调用 showDialog 方法,弹出自定义的 AlertDialog

  3. 按钮点击事件:在按钮的 onClick 事件中调用 this.customAlertDialog.build 方法,传入标题、消息内容以及按钮点击回调。

步骤 4:运行和调试

  1. 打开 DevEco Studio,选择目标设备(模拟器或真实设备)。
  2. 点击运行按钮,调试并查看弹出的自定义对话框。
  3. 点击按钮,查看对话框是否成功弹出,并根据点击的按钮输出相应的日志。

总结

以上是如何在鸿蒙系统中使用 ArkTS 创建自定义的 AlertDialog。通过封装 CommonDialog 组件,你可以灵活地定制对话框的样式和行为。你可以根据需要进一步扩展该对话框,加入更多的自定义功能,比如图标、输入框等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql之慢查询设置及日志分析

mysql之慢查询日志分析 1.临时开启慢查询日志2.永久开启慢查询日志 慢查询是指mysql提供的日志记录功能&#xff0c;用来记录执行时间超过设置阈值的sql语句&#xff0c;并将信息写入到日志文件中&#xff1b; 1.临时开启慢查询日志 注意&#xff1a; 1.以下命令需要连接进入到…

【快速入门 LVGL】-- 1、STM32 工程移植 LVGL

目录 一、LVGL 简述 二、复制一个STM32工程 三、下载 LVGL 四、裁剪 源文件 五、工程添加 LVGL 文件 六、注册 显示 七、注册 触摸屏 八、LVGL 心跳、任务刷新 九、开跑 LVGL 十、控件的事件添加、响应处理 十 一、几个好玩小事情 十 二、显示中文 ~~ 约定 ~~ 在…

小程序租赁系统开发的优势与应用解析

内容概要 随着科技的迅猛发展&#xff0c;小程序租赁系统应运而生&#xff0c;成为许多企业优化业务的重要工具。首先&#xff0c;它提升了用户体验。想象一下&#xff0c;用户只需轻轻一点&#xff0c;就能够浏览和租赁心仪的商品&#xff0c;这种便捷的过程使繁琐的操作大大…

LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率

参考&#xff1a; https://zhuanlan.zhihu.com/p/719510286 1、query重写 你是一名AI助手&#xff0c;负责在RAG&#xff08;知识库&#xff09;系统中通过重构用户查询来提高检索效果。根据原始查询&#xff0c;将其重写得更具体、详细&#xff0c;以便更有可能检索到相关信…

Spring Boot 3 集成 Spring Security(2)授权

文章目录 授权配置 SecurityFilterChain基于注解的授权控制自定义权限决策 在《Spring Boot 3 集成 Spring Security&#xff08;1&#xff09;》中&#xff0c;我们简单实现了 Spring Security 的认证功能&#xff0c;通过实现用户身份验证来确保系统的安全性。Spring Securit…

C++系统教程008-运算符与表达式

1.运算符与表达式 基本数据类型知道后&#xff0c;就是操作数据。要操作数据&#xff0c;就必须使用运算符和表达式。接下来就是C运算符和表达式的相关知识点&#xff0c; 赋值运算算术运算关系运算逻辑运算逗号运算位运算移位运算sizeof运算数据类型自动转换和强制转换 1.1…

LCR 006. 两数之和 II - 输入有序数组

一.题目&#xff1a; LCR 006. 两数之和 II - 输入有序数组 - 力扣&#xff08;LeetCode&#xff09; 二.我的原始解法-暴力解法超时&#xff1a; class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 暴力解法 result [] for i in rang…

提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路

前言 最近公司有个系统要做一个质量报告导出为PDF的需求&#xff0c;这个报表的内容是固定格式&#xff0c;但是不固定内容多少的&#xff0c;网上找了很多资料&#xff0c;没有很好的解决我的问题&#xff0c;pdfmakde、还有html2CanvasjsPDF以及Puppeteer无头浏览器的方案都不…

UPLOAD LABS | UPLOAD LABS 靶场初识

关注这个靶场的其它相关笔记&#xff1a;UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;UPLOAD LABS 靶场简介 UPLOAD LABS 靶场是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列文件上传漏洞的实验环境&#xff0c;用于帮助用户了解文件上传漏洞的…

探索Python词云库WordCloud的奥秘

文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍&#xff1a;为何选择WordCloud&#xff1f;2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍&#xff1a;为何选择Wo…

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

一、单选题 1、下面代码运行后出现的图像是&#xff1f;&#xff08; &#xff09; import matplotlib.pyplot as plt import numpy as np x np.array([A, B, C, D]) y np.array([30, 25, 15, 35]) plt.bar(x, y) plt.show() A. B. C. D. 正确答案&#xff1a;A 答案…

深度学习与持续学习:人工智能的未来与研究方向

文章目录 1. 持续学习与深度学习1.1 深度学习的局限1.2 持续学习的定义 2. 目标与心智2.1 奖励假说2.2 心智的构成 3. 对研究方法的建议3.1 日常写作记录3.2 中立对待流行趋势 1. 持续学习与深度学习 1.1 深度学习的局限 深度学习注重“瞬时学习”&#xff0c;如ChatGPT虽在语…

数据分析——读取

读取(以ysck.txt文件为例)

【Axure高保真原型】天气模板

今天和大家分享天气模板的原型模板&#xff0c;里面包括晴天、多云、阴天、小雨、大雨、暴雨、强雷阵雨、小雪、中雪、大雪、暴雪、雨夹雪、微风、强风、狂风、龙卷风、轻雾、大雾等&#xff0c;后续也可以自行添加。 这个模板是用中继器制作的&#xff0c;所以使用也很方便&a…

java内存管理介绍

1. 堆&#xff08;Heap&#xff09;&#xff1a; • 这是Java对象存储的主要区域&#xff0c;类似于一个大仓库&#xff0c;用于存放所有动态分配的对象实例。堆内存由JVM自动管理&#xff0c;包括对象的分配和回收。 2. 栈&#xff08;Stack&#xff09;&#xff1a; • 每个线…

neo4j图数据库community-5.50创建多个数据库————————————————

1.找到neo4J中的conf文件&#xff0c;我的路径是&#xff1a;D:\Program Files\neo4j-community-5.5.0-windows\neo4j-community-5.5.0\conf 这里找自己的安装路径&#xff0c; 2.用管理员模式打开conf文件&#xff0c;右键管理员&#xff0c;记事本或者not 3.选中的一行新建一…

《Unity Shader 入门精要》高级纹理

立方体纹理 图形学中&#xff0c;立方体纹理&#xff08;Cubemap&#xff09;是环境映射&#xff08;Environment Mapping&#xff09;的一种实现方法。环境映射可以模拟物体周围的环境&#xff0c;而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…

【逐行注释】自适应观测协方差R的AUKF(自适应无迹卡尔曼滤波,MATLAB语言编写),附下载链接

文章目录 自适应R的UKF逐行注释的说明运行结果部分代码各模块解释 自适应R的UKF 自适应无迹卡尔曼滤波&#xff08;Adaptive Unscented Kalman Filter&#xff0c;AUKF&#xff09;是一种用于状态估计的滤波算法。它是基于无迹卡尔曼滤波&#xff08;Unscented Kalman Filter&…

Scala习题

姓名&#xff0c;语文&#xff0c;数学&#xff0c;英语 张伟&#xff0c;87&#xff0c;92&#xff0c;88 李娜&#xff0c;90&#xff0c;85&#xff0c;95 王强&#xff0c;78&#xff0c;90&#xff0c;82 赵敏&#xff0c;92&#xff0c;88&#xff0c;91 孙涛&#xff0c…

【rustdesk】客户端和服务端的安装和部署(自建服务器,docker,远程控制开源软件rustdesk)

【rustdesk】客户端和服务端的安装和部署&#xff08;自建服务器&#xff0c;docker&#xff09; 一、官方部署教程 https://rustdesk.com/docs/zh-cn/client/mac/ 官方服务端下载地址 https://github.com/rustdesk/rustdesk-server/releases 我用的docker感觉非常方便&am…