Android AlertDialog对话框

news2024/11/27 22:38:38

目录

  • 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() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "确定被点击了", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public 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() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        singleCheckedItem = which;
                    }
                });
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, singleItemStr[singleCheckedItem] + "确定被点击了", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public 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() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        multiCheckedItems[which] = isChecked;
                    }
                });
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public 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() {
                    @Override
                    public 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() {
            @Override
            public 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() {
                    @Override
                    public 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() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
            }
        });

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

Gitee

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

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

相关文章

基于DMAIC降低气缸体水套芯磕碰伤率

在制造业的激烈竞争中&#xff0c;产品质量的提升一直是企业追求的目标。气缸体作为汽车发动机的核心部件&#xff0c;其生产过程中的质量控制尤为重要。今天&#xff0c;深圳天行健企业管理咨询公司就来分享一下如何运用DMAIC&#xff08;定义、测量、分析、改进、控制&#x…

IDC:奇安信、深信服、安恒、绿盟、斗象组成了中国NDR市场的主要玩家

2024 年 6 月 20 日&#xff0c;IDC 正式发布了针对中国网络威胁检测与响应产品的市场份额研究报告——《中国网络威胁检测与响应市场份额&#xff0c;2023&#xff1a;NDR正在向更多技术栈延伸》&#xff08;2024年6月&#xff09;。报告针对2023年中国网络威胁检测与响应市场…

STMCUBEMX_IIC_LL库_AT24C64分页读取和写入

STMCUBEMX_IIC_LL库_AT24C64分页读取和写入 前言&#xff1a; 一个项目中构建的软件系统需要存储非常多的用户参数&#xff0c;大约有几千字节&#xff0c;所以牵扯到自己设计跨页写入算法&#xff0c;注意读出也是需要设计跨页读出算法的&#xff08;手册没强调&#xff0c;但…

App Store迎来了重磅更新,ASO冲榜优化或将成为不可或缺的一部分

近日App Store搜索页面迎来了重磅更新&#xff0c;苹果应用商店中搜索页面原有的热搜关键词消失了取而代之的是直接将排行榜放在了搜索顶部&#xff0c;分别是APP排行和游戏排行两部分。如下图&#xff1a; 很多人应该都是参考排行榜来下载APP的&#xff0c;这次更新之后用户在…

创维汽车开展年中总结会:创新创造·勇开拓 智慧经营·攀高峰

2024年7月3日&#xff0c;回顾上半年的工作成果&#xff0c;总结经验教训&#xff0c;明确下半年的发展方向和重点任务&#xff0c;创维汽车于山西省晋中市榆次区山西联合创维体验中心开展年中总结会。 创维集团、创维汽车创始人黄宏生&#xff1b;开沃集团联合创始人、首席执…

160行代码实现代码雨效果

效果 序言 很喜欢黑客帝国里面那种代码雨的效果&#xff0c;为了锻炼自己的特效编写能力就尝试了一下&#xff0c;花了一下午写出来了。有需要的小伙伴拿去参考. 代码 package com.zgh.myapplication;import android.content.Context; import android.graphics.Canvas; impo…

PLM系统:PLM系统如何重塑产品生命周期管理

PLM系统&#xff1a;重塑产品生命周期管理的未来 在当今快速变化的商业环境中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;系统正逐渐成为企业提升竞争力、加速创新并优化运营流程的关键工具。随着技术的不断进步和市场需求的日益复杂化&#xff0c;传统的手动或…

视创云展线上虚拟展厅的优势与特点

一、线上虚拟展厅的无限魅力 1、沉浸式体验&#xff0c;跨越时空界限 视创云展线上虚拟展厅借助前沿的虚拟现实技术&#xff0c;为参观者打造了一场跨越物理界限的奇妙之旅。无论身处世界的哪个角落&#xff0c;只需轻点鼠标&#xff0c;即可瞬间“穿越”至展览现场&#xff…

“免费”的可视化大屏案例分享-智慧园区综合管理平台

一.智慧园区是什么&#xff1f; 智慧园区是一种融合了新一代信息与通信技术的先进园区发展理念。它通过迅捷信息采集、高速信息传输、高度集中计算、智能事务处理和无所不在的服务提供能力&#xff0c;实现了园区内及时、互动、整合的信息感知、传递和处理。这样的园区旨在提高…

Python爬虫康复训练——笔趣阁《神魂至尊》

还是话不多说&#xff0c;很久没写爬虫了&#xff0c;来个bs4康复训练爬虫&#xff0c;正好我最近在看《神魂至尊》&#xff0c;爬个txt文件下来看看 直接上代码 """ 神魂至尊网址-https://www.bqgui.cc/book/1519/ """ import requests from b…

Contact Form 7表单获取提交用户IP及URL等信息

有时候&#xff0c;您可能需要了解Contact Form 7表单提交后的更多的信息&#xff0c;而不仅仅是通过联系人表单字段获取用户的联系信息。例如&#xff0c;需要知道用户是哪个国家&#xff08;通过获取IP&#xff09;&#xff0c;了解用户使用的设备&#xff08;手机还是电脑&a…

什么是空气电容器?

空气电容器是使用空气作为电介质的电容器。简单的空气电容器由两个导电板组成&#xff0c;中间有一个气隙。空气电容器可以制成可变或固定电容形式。固定电容空气电容器很少使用&#xff0c;因为还有许多其他具有优异特性的类型。可变空气电容器由于其结构简单而更常用。它们通…

利用联合概率分布筛选2个维度、三个维度数据

目录 1. 整体分析步骤1:联合分布可视化步骤2:定义筛选条件步骤3:应用筛选条件实例演示第一步:联合分布可视化第二步:定义筛选条件第三步:应用筛选条件数据检查与清洗步骤数据清洗步骤下一步2. 定义筛选条件方法一:基于分位数的筛选方法二:基于高密度区域的筛选进一步分…

Leetcode.342 4的幂

给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 示例 1&#xff1a; 输入&#xff1a;n 16 输出&#xff1a;true示…

第20章 Mac+VSCode配置C++环境

1. 下载VSCode VSCode下载地址在mac终端里输入xcode- select --install命令,根据提示安装xcode工具。2. 安装插件(4个) 打开VScode,点击应用右侧菜单栏 C/C++(必装) Code Runner(必装) CodeLLDB(代码调试),不安装这个插件程序调试时,无法在vscode自带的终端里输入参…

智慧办公楼宇可视化:智能管理与优化

通过图扑可视化技术集成多种数据源&#xff0c;实时展示智慧办公楼宇的运行状态和管理信息&#xff0c;助力高效运营和工作环境优化。

荣耀电脑误删U盘文件?别慌,这里有找回方法

荣耀电脑误删U盘文件怎么找回&#xff1f;在日常工作和生活中&#xff0c;U盘是我们存储和传输数据的重要工具之一。然而&#xff0c;在使用荣耀电脑时&#xff0c;如果不小心误删了U盘中的文件&#xff0c;可能会给我们带来不小的困扰。但是&#xff0c;别慌&#xff01;本文将…

4面体空间5点结构种类与占比

在30个点的4面体中取5个点&#xff0c;有30*29*28*27*26/(5*4*3*2)142506种取法&#xff0c; 这里要求5个点必须是直链或支链。共有496个组合符合要求&#xff0c;按平移对称性可分成181个不同的结构 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 …

四川赤橙宏海商务信息咨询有限公司引领抖音电商浪潮

在数字时代的浪潮下&#xff0c;电商行业飞速发展&#xff0c;抖音电商作为新兴的电商模式&#xff0c;凭借其独特的社交属性和短视频形式&#xff0c;迅速吸引了众多消费者和商家的目光。四川赤橙宏海商务信息咨询有限公司&#xff0c;作为抖音电商服务的佼佼者&#xff0c;凭…