Android AlertDialog对话框

目录

  • AlertDialog对话框
    • 普通对话框
    • 单选框
    • 多选框
    • 自定义框

AlertDialog对话框

部分节选自博主编《Android应用开发项目式教程》(机械工业出版社)2024.6

在Android中,AlertDialog弹出对话框用于显示一些重要信息或者需要用户交互的内容。
弹出对话框一般以小窗口的形式展示在界面上,如图所示。
弹出对话框一般可以分为三个部分:标题区、内容区、按钮区,其中内容区可以有多种样式,可以是普通的文本、单选框、多选框、输入框、自定义布局等。
在这里插入图片描述
一般情况下,创建AlertDialog对话框的步骤大致分为以下几步:
1)创建AlertDialog.Builder的对象;
2)设置AlertDialog对话框的标题名称和图标。
3)设置对话框内容,调用AlertDialog.Builder的setMessage()、setView()、setSingleChoiceItems()、setMultiChoiceItems()方法设置AlertDialog对话框的内容为简单文本、自定义、单选列表或多选列表。
4)调用AlertDialog.Builder的setPositiveButton()和setNegativeButton()方法设置AlertDialog对话框的确定和取消按钮。
5)调用AlertDialog.Builder的create()方法创建AlertDialog对象。
6)调用AlertDialog对象的show()方法显示该对话框。

普通对话框

在这里插入图片描述

创建普通对话框的示例代码如下:

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.mipmap.ic_launcher);builder.setTitle("普通对话框");builder.setMessage("这是内容");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "确定被点击了", Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});AlertDialog alertDialog = builder.create();alertDialog.show();

单选框

在这里插入图片描述

创建其他AlertDialog的代码类似,区别在于普通对话框内容部分是设置消息setMessage(),单选框是setSingleChoiceItems(),多选框是setMultiChoiceItems(),自定义框是setView()。单选框需要在选项被勾选时记录被勾选的选项,并在确定被单击时获取该选项值,单选框的关键示例代码如下:

 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.mipmap.ic_launcher);builder.setTitle("单选对话框");builder.setSingleChoiceItems(singleItemStr, singleCheckedItem, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {singleCheckedItem = which;}});builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, singleItemStr[singleCheckedItem] + "确定被点击了", Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});AlertDialog alertDialog = builder.create();alertDialog.show();

多选框

在这里插入图片描述

多选框与单选框类似,也需要在选项被勾选时记录被勾选的选项,并在确定时获取被勾选的选项值,不同的是由于多选框可以多个选项被选中,因此需要用一个数组记录选项是否被勾选。多选框的关键示例代码如下:

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.mipmap.ic_launcher);builder.setTitle("多选对话框");builder.setMultiChoiceItems(multiItemStr, multiCheckedItems, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {multiCheckedItems[which] = isChecked;}});builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < multiCheckedItems.length; i++) {if (multiCheckedItems[i]) {stringBuffer.append(multiItemStr[i]).append(" ");}}Toast.makeText(MainActivity.this, stringBuffer.toString() + "被选中了", Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});AlertDialog alertDialog = builder.create();alertDialog.show();

自定义框

自定义弹出对话框需要自定义对话框内容的布局,并实现相关逻辑。
以下是一个自定义对话框关键代码的示例,
在这里插入图片描述

该自定义对话框较为简单,只有一个输入框:

        LayoutInflater inflater = getLayoutInflater();View definedView = inflater.inflate(R.layout.self_defined, null, false);buttonDefine.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setIcon(R.mipmap.ic_launcher);builder.setTitle("自定义对话框");builder.setView(definedView);builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {EditText editText = definedView.findViewById(R.id.editTextText);String str = editText.getText().toString().trim();Toast.makeText(MainActivity.this, "输入密码是:" + str, Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});AlertDialog alertDialog = builder.create();alertDialog.show();}});

完整代码请查看gitee:source/v1.0/Project3Views/AlertDialogTest

Gitee

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

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

相关文章

【Linux进阶】磁盘分区2——MBR和GPT

1.磁盘的分区 因为如果你的磁盘被划分成两个分区&#xff0c;那么每个分区的设备文件名是什么&#xff1f; 在了解这个问题之前&#xff0c;我们先来复习一下磁盘的组成&#xff0c;因为现今磁盘的划分与它物理的组成很有关系。 我们谈过磁盘主要由碟片、机械手臂、磁头与主轴马…

gda动态调试-cnblog

忽的发现gda有动态调试功能 动态监听返回值 框柱指定方法&#xff0c;选择调试方法&#xff0c;gda会自动监听函数的返回值&#xff0c;例如 自定义frida脚本 gda会自动生成hook该函数的frida脚本

window.ai 开启你的内置AI之旅

❝ 成功是得你所想&#xff0c;幸福是享你所得 大家好&#xff0c;我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 AI( Gemini Nano) Chrome Ollama 因为&#xff0c;行文字数所限&#xff0c;有些概念可能会一带而过亦或者提供…

顶顶通呼叫中心中间件-外呼通道变量同步到坐席通道变量(mod_cti基于Freeswitch)

机器人伴随转人工或者排队转人工 把外呼通道同步到坐席通道变量 在拨号方案转人工动作cti_acd,或者转机器人动作cti_rotobt的前面&#xff0c;添加一个 export nolocal:变量名${变量名} 一、配置拨号方案 win-ccadmin配置方法 点击拨号方案 -> 点击进入排队 -> 根据图…

Java项目:基于SSM框架实现的中小企业人力资源管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的中小企业人力资源管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简…

jmeter-beanshell学习2-beanshell断言

继续写&#xff0c;之前写了获取变量&#xff0c;设置变量&#xff0c;今天先写个简单点的断言。 一般情况用响应断言&#xff0c;就挺好使&#xff0c;但是自动化还要生成报告&#xff0c;如果断言失败了&#xff0c;要保存结果&#xff0c;只能用beanshell处理&#xff0c;顺…

Ubuntu 24.04-自动安装-Nvidia驱动

教程 但在安全启动模式下可能会报错。 先在Nvidia官网找到GPU对应的驱动版&#xff0c; 1. 在软件与更新中选择合适的驱动 2. ubuntu自动安装驱动 sudo ubuntu-drivers autoinstall显示驱动 ubuntu-drivers devices3. 安装你想要的驱动 sudo apt install nvidia-driver-ve…

如何在 SwiftUI 中熟练使用 sensoryFeedback 修饰符

文章目录 前言背景介绍平台支持仅支持watchOS支持watchOS和iOS 基本用法预定义样式根据触发器值选择样式使用场景当值更改时触发使用条件闭包触发使用反馈闭包触发 可以运行 Demo总结 前言 SwiftUI 引入了新的 sensoryFeedback 视图修饰符&#xff0c;使我们能够在所有 Apple …

推荐 3个让你爽到爆炸的电脑软件,完全免费,请低调使用

Royal TS Royal TS是一款功能强大的远程系统访问工具&#xff0c;适用于服务器管理员、系统工程师、开发人员和专注于IT的信息工作者。它支持多种协议&#xff08;如RDP、VNC、SSH、HTTP/S等&#xff09;&#xff0c;使得用户能够方便地管理远程系统的连接。通过定义管理连接&a…

无人机常见故障及维修方法详解

一、无人机故障识别与处理原则 无人机故障识别是维修的第一步&#xff0c;要求操作人员具备基本的无人机系统知识和故障识别能力。在识别故障时&#xff0c;应遵循“先易后难、先外后内、先软件后硬件”的原则。一旦识别出故障&#xff0c;应立即停止飞行&#xff0c;避免进一…

Java经典面试题将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成

Java经典面试题将一个字符串数组进行分组输出&#xff0c;每组中的字符串都由相同的字符组成 题目&#xff1a; 将一个字符串数组进行分组输出&#xff0c;每组中的字符串都由相同的字符组成 举个例子&#xff1a;输入[“eat”,“tea”,“tan”,“ate”,“nat”,“bat”] 输出…

高性价比模块:LSYT201B语音模块学习使用

最近打算做个语音的项目&#xff0c;找到了深圳雷龙发展的LSY201B这款语音模块&#xff0c;写出来安利一下 程序源码&#xff1a;SuiXinSc/Speech-Module (github.com) 或者进入Q群找我获取 目录 一&#xff0c;简要介绍&#xff1a; 硬件参数&#xff1a; 1&#xff0c;处理…

add_metrology_object_generic 添加测量模型对象。找两条直线,并计算两条线的夹角和两个线的总长度,转换成毫米单位

*添加测量模型对象 *将测量对象添加到测量模型中 *算子参数&#xff1a; *    MeasureHandle&#xff1a;输入测量模型的句柄&#xff1b; *    Shape&#xff1a;输入要测量对象的类型&#xff1b;默认值&#xff1a;‘circle’&#xff0c;参考值&#xff1a;‘circl…

蓝牙模块功耗优化技术研究

蓝牙模块作为无线通信技术的重要组成部分&#xff0c;在智能家居、可穿戴设备、医疗健康等领域得到了广泛应用。然而&#xff0c;随着设备功能的不断增加和用户对续航能力的日益关注&#xff0c;蓝牙模块的功耗问题逐渐凸显。因此&#xff0c;对蓝牙模块功耗优化技术的研究具有…

154. 寻找旋转排序数组中的最小值 II(困难)

154. 寻找旋转排序数组中的最小值 II 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;154. 寻找旋转排序数组中的最小值 II 2.详细题解 该题是153. 寻找旋转排序数组中的最小值的进阶题&#xff0c;在153. 寻找旋转排序数组中的最小值…

2024年7月6日 十二生肖 今日运势

小运播报&#xff1a;2024年7月6日&#xff0c;星期六&#xff0c;农历六月初一 &#xff08;甲辰年庚午月辛未日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;猪、马、兔 需要注意&#xff1a;狗、鼠、牛 喜神方位&#xff1a;西南方 财神方位&#xff1a;正…

【介绍下JSON,JSON是什么?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 💡JSON讲解 💡1. 介绍💡2. JSON的基本规则💡3. JSON中的数…

Linux配置固定ip地址

虚拟机的Linux操作系统&#xff0c;其IP地址是通过DHCP服务获取的 DHCP&#xff1a;动态获取IP地址&#xff0c;即每次重启设备后都会获取一次&#xff0c;可能导致IP地址频繁变更。 一般系统默认的ip地址设置都是自动获取&#xff0c;故每次系统重启后ip地址都可能会不一样&a…

【C语言】typedef 关键字

在C语言中&#xff0c;typedef关键字用于给现有的数据类型起一个新的名字。它在提高代码可读性、简化复杂类型声明、增强可维护性方面非常有用。typedef通常用于定义结构体、指针、函数指针以及其他复杂类型。 基本用法 typedef int MyInt; MyInt x 10;在这个例子中&#xf…

植物学(书籍学习资料)

包含观赏植物学、植物学、植物学百科图鉴等多本植物学方面的书籍学习资料。 图2、3为观赏植物学截图&#xff1b; 图4、5为植物学百科图鉴截图&#xff1b; 图6、7为植物学学习指南截图。