android入门 — AlertDialog对话框

常见的对话框主要分为消息提示对话框、确认对话框、列表对话框、单选对话框、多选对话框和自定义对话框。
对话框可以阻碍当前的UI线程,常用于退出确认等方面。
在这里主要的步骤可以总结为:
1.创建AlertDialog.Builder对象;
2.调用setTitle()或setCustomTitle()方法设置标题;
3.调用setIcon()设置图标;
4.调用setPositiveButton()、setNegativeButton()或setNeturalButton()添加按钮;
5.调用AlertDialog.Builder的create()方法来创建AlertDialog对象;
6.调用AlertDialog.Builder的show()方法将对话框显示出来。
这一部分,主要使用的是设计模式中的建造者模式,将东西提供给builder,然后会组装成一个完整的对话框。
①显示提示消息的对话框
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)
{
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_4)
.setTitle("提示")
.setMessage("这是一个提示信息")
//处理对话框的时候往往是在一个事件中处理,所以此时使用内部类的方式去做
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//注意这里的this必须要修改,因为是在内部类中,所以直接使用this指的是这个内部类,所以需要修改
Toast.makeText(MainActivity.this, "点击了确认", Toast.LENGTH_SHORT).show();
}
})
.show();
return true;
}
设置了图标、标题和提示信息等属性。
②确认对话框
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)
{
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_4)
.setTitle("提示")
//可以设置null,表示在点击之后什么都不做,没有后续的处理
//只是使得对话框消失
.setNegativeButton("取消", null)
//处理对话框的时候往往是在一个事件中处理,所以此时使用内部类的方式去做
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//注意这里的this必须要修改,因为是在内部类中,所以直接使用this指的是这个内部类,所以需要修改
//Toast.makeText(MainActivity.this, "点击了确认", Toast.LENGTH_SHORT).show(); //也可以使用finish()结束当前activity的生命周期,变为不可见,之后还可以使用这个activity的资源
//如果当前的activity是主界面,那么activity栈就变成空的,
finish(); //如果调用exit()则是
//System.exit(0);
}
})
.show();
return true;
}
在这里添加了图标、标题。
主要的改变是增加了setNegativeButton()方法和setPositiveButton()方法,用来点击确认或者取消。

③列表对话框
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)
{
final String[] arr = {"水可载舟,亦可赛艇。", "不要总想搞大新闻!", "西方哪个国家我没去过?", "too young,too simple!"};
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_4)
.setTitle("提示")
.setItems(arr, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您选择了: " + arr[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { }
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { }
})
.show();
return true;
}
首先会定义一个字符数组,然后在onClick()中将字符数组与之绑定。
④自定义对话框
1.定义一个弹出框的格式(用xml定义)
2.反射出对话框
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
Dialog dialog;
public void btnClick(View v)
{
LayoutInflater inflater = LayoutInflater.from(this);
View myView = inflater.inflate(R.layout.layout_myself_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(myView);
myView.findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
//利用dialog来dismiss
//使得这个对话框消失
dialog.dismiss();
Toast.makeText(Main2Activity.this, "点击了确定", Toast.LENGTH_SHORT).show();
}
});
//必须用一个Dialog类型的变量保存builder.create()产生的对象
dialog = builder.create();
dialog.show();
}
}


android入门 — AlertDialog对话框的更多相关文章
- Android:AlertDialog对话框
1.简单的ALertDialog: Dialog alertDialog = new AlertDialog.Builder(this) .setTitle("标题") .setM ...
- 【Android】Android中AlertDialog对话框的使用实例
package com.ceac.deng; import android.R.string; import android.support.v7.app.ActionBarActivity; imp ...
- Android在 Alertdialog对话框中点击消失?
在开发的时候遇到一个问题.就是一触摸对话框边缘外部,对话框会自己主动消失.这个问题非常纠结啊,查找了一下发现从Android 4.0開始.AlertDialog有了变化.就是在触摸对话框边缘外部.对话 ...
- android 的AlertDialog对话框
private int selectedFruitIndex = 0; private void showMsg2() {// Dialog alertDialog = new AlertDial ...
- Android中AlertDialog对话框禁止按[返回键]或[搜索键]
alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(Di ...
- 11.Android之常用对话框AlertDialog学习
(1)首先我们写个简单的AlertDialog对话框,要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法,然后创建对话框可以设置对话框的属性,比如 ...
- android中常见对话框之一AlertDialog
在Android应用中,有多种对话框:Dialog.AlertDialog.ProgressDialog.时间.日期等对话框. (1)Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽 ...
- Android应用开发学习之AlertDialog对话框
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文中我们通过一个例子来看AlertDialog对话框的实现,其运行效果如下: 主布局文件main.xml内容如下: ...
- Android中弹出对话框,AlertDialog关键代码
写在这里便于以后查看. Android中弹出对话框的关键代码: btn01.setOnClickListener(new OnClickListener() { @Override public vo ...
随机推荐
- swift3.0 保存图片到本地,申请权限
1.info中写上 <key>NSCameraUsageDescription</key> <string>需要您的同意才能读取媒体资料库</string&g ...
- vue的声明式渲染
声明式渲染 答:2018-8-23声明式渲染是vue对数据进行操作的模式,也叫做响应式渲染当dom节点上绑定了vue的对象的属性时,如果这个属性发生了改变,无需你进行其它的操作,页面上的数据会自动发生 ...
- openstack之kvm常用操作
KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理. 1. 查看KVM虚拟机配置文件及运行状态 KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/ autostart目录 ...
- Java核心技术36讲----------Exception和Error有什么区别
1.异常知识点学习实例 代码如下: package fromnet; /** * 参考链接:https://blog.csdn.net/qq_18505715/article/details/7319 ...
- Spark运行模式_Spark自带Cluster Manager的Standalone Client模式(集群)
终于说到了体现分布式计算价值的地方了! 和单机运行的模式不同,这里必须在执行应用程序前,先启动Spark的Master和Worker守护进程.不用启动Hadoop服务,除非你用到了HDFS的内容. 启 ...
- python学习笔记:第7天 深浅拷贝
目录 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 1. 基础数据类型补充 (1)join方法 join方法是把一个列表中的数据进行拼接,拼接成字符串(与split方法相反,split方法 ...
- 破解Wifi
牛刀小试:Wifi破解的原理. 准备工具: 1:Kali Linux系统 2:一块好用的无线网卡 (推荐免驱版,网上也有推荐,可以去百度上google一下) 3:WPA字典(用来爆破抓获的握手包) ...
- java 获取目标时间到当前时间中间的月份和每月最大时间
话不多说自己上代码: Date firstDate = DateUtil.formate("2018-01-01", "yyyy-MM-dd"); Date c ...
- 深圳Uber司机本周(7.13-7.19凌晨4:00)的奖励政策
本周(7.13-7.19凌晨4:00)的奖励政策为: 佣金返还: 车费的20%适用于所有产品(不包括Tesla)无获取条件 翻倍补贴: 每周一到周四07:00-10:00/17:00-22:00:车费 ...
- 成都Uber优步司机奖励政策(3月4日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...