Android 对话框组件 AlertDialog 四种常用方法

简介: Android 对话框组件 AlertDialog 四种常用方法

一、什么是AlertDialog对话框 ?

在Android中,AlertDialog可以为当前的界面上显示一个对话框,而且产生的对话框是在所有界面元素上面的,能够覆盖掉其余组件,所以AlertDialog一般是用于提示一些非常重要的信息或者警告内容。

 

二、如何使用?

 

AlertDialog的功能十分强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框

对话框区域通常被分为四个区域,分别是图标区、标题区、内容区、按钮区域

 

1.显示带确定、取消按钮的对话框

效果图:

单击按钮后:

对话框隐藏,提示单击信息。

 

实现方法,在XML文件中新建一个按钮,在Java文件中添加单击事件响应

1. button1.setOnClickListener(new View.OnClickListener() {
2. @Override
3. public void onClick(View v) {
4. AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
5.         alertDialog.setIcon(R.mipmap.advise);
6.         alertDialog.setTitle("标题");
7.         alertDialog.setMessage("具体文本");
8. 
9.         alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {
10. @Override
11. public void onClick(DialogInterface dialog, int which) {
12.                 Toast.makeText(MainActivity.this, "您单击了否按钮", Toast.LENGTH_SHORT).show();
13.             }
14.         });
15. 
16.         alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {
17. @Override
18. public void onClick(DialogInterface dialog, int which) {
19.                 Toast.makeText(MainActivity.this, "您单击了是按钮 ", Toast.LENGTH_SHORT).show();
20.             }
21.         });
22.         alertDialog.show();
23.     }
24. });

 


2. 显示带列表的对话框

效果展示:

单击按钮后:

对话框隐藏,提示单击信息。

1. button2.setOnClickListener(new View.OnClickListener() {
2. @Override
3. public void onClick(View v) {
4. 
5. final String[] items = new String[]{"选项1", "选项2", "选项3","选项4"};
6. 
7.         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
8.         builder.setIcon(R.mipmap.advise1);
9.         builder.setTitle("请选择选项:");
10. 
11.         builder.setItems(items, new DialogInterface.OnClickListener() {
12. @Override
13. public void onClick(DialogInterface dialog, int which) {
14.                 Toast.makeText(MainActivity.this,
15. "您选择了" + items[which], Toast.LENGTH_SHORT).show();
16.             }
17.         });
18.         builder.create().show();
19.     }
20. });

 


3. 显示带单选列表项的对话框

效果展示:

单击后:

Java逻辑代码部分:

1. button3.setOnClickListener(new View.OnClickListener() {
2. @Override
3. public void onClick(View v) {
4. 
5. final String[] items = new String[]{"扎克伯格", "乔布斯", "拉里.埃里森", "安迪.鲁宾", "马云"};
6. 
7.         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
8.         builder.setIcon(R.mipmap.advise2);
9.         builder.setTitle("如果让你选择,你最想做哪一个:");
10.         builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
11. @Override
12. public void onClick(DialogInterface dialog, int which) {
13.                 Toast.makeText(MainActivity.this,
14. "您选择了" + items[which], Toast.LENGTH_SHORT).show();
15.             }
16.         });
17.         builder.setPositiveButton("确定", null);
18.         builder.create().show();
19.     }
20. });


4. 显示带多选列表项的对话框

效果展示:

单击后:

点击确定后,显示:

Java逻辑代码:

1. button4.setOnClickListener(new View.OnClickListener() {
2. @Override
3. public void onClick(View v) {
4.         checkedItems = new boolean[]{false, true, false, true, false};
5. //各列表项要显示的内容
6.         items = new String[]{"开心消消乐", "球球大作战", "欢乐斗地主", "梦幻西游", "超级玛丽"};
7. 
8.         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
9.         builder.setIcon(R.mipmap.advise2);
10.         builder.setTitle("请选择您喜爱的游戏:");
11.         builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
12. @Override
13. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
14.                 checkedItems[which] = isChecked;
15. 
16.             }
17.         });
18. 
19.         builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
20. @Override
21. public void onClick(DialogInterface dialog, int which) {
22. String result = "";
23. for (int i = 0; i < checkedItems.length; i++) {
24. if (checkedItems[i]) {
25.                         result += items[i] + "、";
26.                     }
27.                 }
28. if (!"".equals(result)) {
29.                     result = result.substring(0, result.length() - 1);
30.                     Toast.makeText(MainActivity.this,
31. "您选择了[ " + result + " ]", Toast.LENGTH_LONG).show();
32.                 }
33.             }
34.         });
35.         builder.create().show();
36.     }
37. });

 


三、总结

 

在Android中,如果需要使用 对话框 组件,来实现一定的功能,就需要用到 AlertDialog

本文主要总结了 AlertDialog 的四种常用方法,以便后续不时之需。


相关文章
|
4天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
1月前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
1月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
76 0
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
76 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
182 2
|
21天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
46 15
Android 系统缓存扫描与清理方法分析
|
1月前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
1月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
44 6
|
2月前
|
存储 开发框架 数据可视化
深入解析Android应用开发中的四大核心组件
本文将探讨Android开发中的四大核心组件——Activity、Service、BroadcastReceiver和ContentProvider。我们将深入了解每个组件的定义、作用、使用方法及它们之间的交互方式,以帮助开发者更好地理解和应用这些组件,提升Android应用开发的能力和效率。
176 5
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
45 2