1  AlertDialog.Builder builder=new AlertDialog.Builder(this);
2 builder.setTitle("历史记录").setIcon(R.mipmap.info).setMessage(str)
3 .setPositiveButton("ok", new DialogInterface.OnClickListener() {
4 @Override
5 public void onClick(DialogInterface dialog, int which) {
6 }
7 });
8 AlertDialog ad=builder.create();
9 ad.show();


上面这段代码显示的结果如图所示。

简单记录一下AlertDialog的用法:

下面的内容整理自:https://blog.csdn.net/streate/article/details/90899515


1.普通提示对话框

其上主要是提示标题,消息主体,底部“取消”、“确定”等按钮。

 1 /**
2 * 提示对话框
3 */
4 public void tipDialog() {
5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
6 builder.setTitle("提示:");
7 builder.setMessage("这是一个普通对话框,");
8 builder.setIcon(R.mipmap.ic_launcher);
9 builder.setCancelable(true); //点击对话框以外的区域是否让对话框消失
10
11 //设置正面按钮
12 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
13 @Override
14 public void onClick(DialogInterface dialog, int which) {
15 Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show();
16 dialog.dismiss();
17 }
18 });
19 //设置反面按钮
20 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
21 @Override
22 public void onClick(DialogInterface dialog, int which) {
23 Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
24 dialog.dismiss();
25 }
26 });
27 //设置中立按钮
28 builder.setNeutralButton("保密", new DialogInterface.OnClickListener() {
29 @Override
30 public void onClick(DialogInterface dialog, int which) {
31 Toast.makeText(MainActivity.this, "你选择了中立", Toast.LENGTH_SHORT).show();
32 dialog.dismiss();
33 }
34 });
35
36
37 AlertDialog dialog = builder.create(); //创建AlertDialog对象
38 //对话框显示的监听事件
39 dialog.setOnShowListener(new DialogInterface.OnShowListener() {
40 @Override
41 public void onShow(DialogInterface dialog) {
42 Log.e(TAG, "对话框显示了");
43 }
44 });
45 //对话框消失的监听事件
46 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
47 @Override
48 public void onCancel(DialogInterface dialog) {
49 Log.e(TAG, "对话框消失了");
50 }
51 });
52 dialog.show(); //显示对话框
53 }

使用到的方法

- setTitle:设置对话框的标题,比如“提示”、“警告”等; 
- setMessage:设置对话框要传达的具体信息; 
- setIcon: 设置对话框的图标; 
- setCancelable: 点击对话框以外的区域是否让对话框消失,默认为true; 
- setPositiveButton:设置正面按钮,表示“积极”、“确认”的意思,第一个参数为按钮上显示的文字,下同; 
- setNegativeButton:设置反面按钮,表示“消极”、“否认”、“取消”的意思; 
- setNeutralButton:设置中立按钮; 
- setOnShowListener:对话框显示时触发的事件; 
- setOnCancelListener:对话框消失时触发的事件。

2.普通列表对话框

列表对话框的内容就是一列显示内容,

需要用到构造器的setItems方法,

参数一是列表数据,参数二是点击监听接口,

我们要实现这样一个小功能,用户在点击某一项时弹出一个Toast提示选中项的内容。

 1 /**
2 * 列表对话框
3 */
4 private void itemListDialog() {
5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
6 builder.setTitle("选择你喜欢的课程:");
7 builder.setCancelable(true);
8 final String[] lesson = new String[]{"语文", "数学", "英语", "化学", "生物", "物理", "体育"};
9 builder.setIcon(R.mipmap.ic_launcher);
10 builder.setIcon(R.mipmap.tab_better_pressed)
11 .setItems(lesson, new DialogInterface.OnClickListener() {
12 @Override
13 public void onClick(DialogInterface dialog, int which) {
14 Toast.makeText(getApplicationContext(), "你选择了" + lesson[which], Toast.LENGTH_SHORT).show();
15 }
16 }).create();
17 //设置正面按钮
18 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
19 @Override
20 public void onClick(DialogInterface dialog, int which) {
21 dialog.dismiss();
22 }
23 });
24 //设置反面按钮
25 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
26 @Override
27 public void onClick(DialogInterface dialog, int which) {
28 dialog.dismiss();
29 }
30 });
31 AlertDialog dialog = builder.create(); //创建AlertDialog对象
32 dialog.show(); //显示对话框
33 }

3.单选对话框

单选对话框的内容就是一个单项选择列表,

需要用到setSingleChoiceItems方法,参数一是列表数据,

参数二是默认选中的item,参数三则是点击监听接口,

我们要实现这样一个小功能,用户在选好某一项之后记下其选择,

下次点开对话框时就默认选中该项。

 1 /**
2 * 单选对话框
3 */
4 public void singleChoiceDialog() {
5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
6
7 builder.setTitle("你现在居住地是:");
8 final String[] cities = {"北京", "上海", "广州", "深圳", "杭州", "天津", "成都"};
9
10 builder.setSingleChoiceItems(cities, chedkedItem, new DialogInterface.OnClickListener() {
11 @Override
12 public void onClick(DialogInterface dialog, int which) {
13 Toast.makeText(getApplicationContext(), "你选择了" + cities[which], Toast.LENGTH_SHORT).show();
14 chedkedItem = which;
15 }
16 });
17 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
18 @Override
19 public void onClick(DialogInterface dialog, int which) {
20 dialog.dismiss();
21 }
22 });
23
24 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
25 @Override
26 public void onClick(DialogInterface dialog, int which) {
27 dialog.dismiss();
28 }
29 });
30
31 AlertDialog dialog = builder.create(); //创建AlertDialog对象
32 dialog.show(); //显示对话框
33 }

4.复选对话框

复选对话框是一个可以重复选中的列表,与单选对话框有点像,

不过调用的是setMultiChoiceItems方法,而且多了一个布尔值参数isChecked,

表示当前点击的item是否被选中。

我们创建一个集合,将点击选中的item添加到集合中,

取消勾选的话就从集合中移除,点击确认按钮后就将选中内容显示出来。

 1 /**
2 * 复选对话框
3 */
4 public void multiChoiceDialog() {
5 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
6 builder.setTitle("请选择你喜欢的颜色:");
7 final String[] colors = {"红色", "橙色", "黄色", "绿色", "蓝色", "靛色", "紫色"};
8 final List<String> myColors = new ArrayList<>();
9
10 builder.setMultiChoiceItems(colors, null, new DialogInterface.OnMultiChoiceClickListener() {
11 @Override
12 public void onClick(DialogInterface dialog, int which, boolean isChecked) {
13 if (isChecked) {
14 myColors.add(colors[which]);
15 } else {
16 myColors.remove(colors[which]);
17 }
18 }
19 });
20
21 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
22 @Override
23 public void onClick(DialogInterface dialog, int which) {
24 String result = "";
25 for (String color : myColors) {
26 result += color + "、";
27 }
28 Toast.makeText(getApplicationContext(), "你选择了: " + result, Toast.LENGTH_SHORT).show();
29 dialog.dismiss();
30 }
31 });
32
33 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
34 @Override
35 public void onClick(DialogInterface dialog, int which) {
36 myColors.clear();
37 dialog.dismiss();
38 }
39 });
40 AlertDialog dialog = builder.create(); //创建AlertDialog对象
41 dialog.show(); //显示对话框
42 }

安卓AlertDialog对话面板的使用---Android开发的更多相关文章

  1. 安卓学习进程(2)Android开发环境的搭建

        本节将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配置Windows上JDK的变量环境 . 第三步:下载安装Eclipse . 第四步:下载安装Androi ...

  2. html+css+js+Hbuilder开发一款安卓APP,根本不用学Android开发!

    我们知道,要做一款安卓APP,咱们得先学安卓开发语言,例如java,前端后端.那么没有这些开发语言基础,咱们怎么做呢?其实现在有比较好的开发方案就是做webAPP,咱们可以用web前端知识构建安卓客户 ...

  3. Android开发:Android Studio开发环境配置

    一.android studio下载: 1.Windows版: 下载地址:https://pan.baidu.com/s/1-sg4dN_2B5nn2YJf-C7XLQ 提取码:yedc 2.Mac版 ...

  4. 学Android开发的人可以去的几个网站

    学Android开发的人可以去的几个网站 1.<IT蓝豹>Android开源项目分享平台国内非常好的一个Android开发者分享站,分享android所有特效,每天都有最新的Android ...

  5. 轻松搭建Unity3D 安卓Android开发环境

    1,下载安装Java的JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html (JDK中,包含JRE) 如果是6 ...

  6. Win7下搭建安卓android开发环境

    本文出自 “孤狼” 博客,请务必保留此出处http://332374363.blog.51cto.com/5262696/1310882 另外,在搭建android开发环境时,还参考了http://w ...

  7. Android开发之使用AlertDialog创建对话框,单选框和多选框

    对话框: 对话框的icon,title,message等都可以不设置. 单选框和多选框与对话框勾选步骤基本上一致. 对话框的构建步骤: 1.使用AlertDialog类的内部类Builder类new ...

  8. Win7的64位系统如何搭建安卓Android开发环境

    在搭建安卓Android开发环境,那么现在比较主流的Win7的64位操作系统如何搭建呢?其实很简单,不需要设置任何环境变量,只需要下载两个程序包(ADT和JDK),下载的时候注意选择相应的64位程序包 ...

  9. 49个你应该了解的Android Studio技巧、插件与资源 http://www.apkbus.com/blog-822721-72630.html (出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

    49个你应该了解的Android Studio技巧.插件与资源http://www.apkbus.com/blog-822721-72630.html(出处: 安卓巴士 - 安卓开发 - Androi ...

  10. Android 开发之深入理解安卓调试桥各种错误解决办法

    摘要: Android开发调试项目使用到安卓调试桥工具,Android Debug Bridge(ADB)位于sdk路径platform-tools文件夹,使用Android Studio或Eclip ...

随机推荐

  1. 关于 try... catch

    在逛论坛看见一个有意思的帖子,有点意思,记录下 关于"异常捕捉"(try catch)是否存在悖论? 一些我觉得有用的回复,放到下面了, 1. 当某些错误状况难以完全避免时,try ...

  2. HttpURLConnection使用分析

    在项目中遇到各种版本的httpClient,所以想了解一下httpClient的实现 首先查看的是JDK1.1中自带的HttpURLConnection,看一下最初的设计是怎么样的 代码分析 使用Ht ...

  3. 案例分享:Qt国产麒麟系统某防“某显示控制项目”(多类设备自动化流程控制,数据分析整合与展示,定位图,深度图,热力图等,多应用协调管控,健壮容错)

    喜报   我司承担的某防"某显示控制项目",已于近日顺利通过湖底验收.   需求   功能简介:  1.多类设备的显示.控制与管理  2.数据的分析与展示,定位图.深度图.热力图等 ...

  4. go值接收者和指针接收者的区别

    方法的接收者 package main import ( "fmt" ) type Person struct { Name string Age int } func (p Pe ...

  5. 关于json序列化时报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    1.今天在写客户端与服务端交互的程序的时候,发现了一个问题 客户端代码 #客户端程序主要是发送注册请求/登录请求给服务端,服务端接收响应后回应对应的应答给客户端,客户端接收响应后,然后做一些操作 # ...

  6. matplotlib画图中x轴过于密集的解决办法

    import matplotlib.ticker as ticker ax.xaxis.set_major_locator(ticker.MultipleLocator(base=10)) # tic ...

  7. Kotlin 函数 与 lambda 表达式

    一.函数 代码块函数体: fun sum(x: Int, y: Int): Int { return x + y } 表达式函数体: fun sum(x: Int, y: Int) = x + y 使 ...

  8. 【Azure Cloud Services】云服务频繁发生服务器崩溃的排查方案

    问题描述 云服务(Cloud Services)在使用期间,频繁发生崩溃事件,在崩溃期间,查看CPU负载为100%,而且同时伴随以下情况: 部署在云服务上的应用无法访问 远程连接云服务实例(RDP)访 ...

  9. 【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错

    问题描述 Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错,是否有其他可以对URL解码的方法呢? 使用H ...

  10. 如何实现十亿级离线 CSV 导入 Nebula Graph

    本文首发于 Nebula Graph Community 公众号 本次实践是基于业务需求及后续扩展,通过技术选型确定了 Nebula Graph 图数据库,首先需要验证 Nebula Graph 数据 ...