常见的对话框主要分为消息提示对话框、确认对话框、列表对话框、单选对话框、多选对话框和自定义对话框。

  对话框可以阻碍当前的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对话框的更多相关文章

  1. Android:AlertDialog对话框

    1.简单的ALertDialog: Dialog alertDialog = new AlertDialog.Builder(this) .setTitle("标题") .setM ...

  2. 【Android】Android中AlertDialog对话框的使用实例

    package com.ceac.deng; import android.R.string; import android.support.v7.app.ActionBarActivity; imp ...

  3. Android在 Alertdialog对话框中点击消失?

    在开发的时候遇到一个问题.就是一触摸对话框边缘外部,对话框会自己主动消失.这个问题非常纠结啊,查找了一下发现从Android 4.0開始.AlertDialog有了变化.就是在触摸对话框边缘外部.对话 ...

  4. android 的AlertDialog对话框

    private int selectedFruitIndex = 0;  private void showMsg2() {//  Dialog alertDialog = new AlertDial ...

  5. Android中AlertDialog对话框禁止按[返回键]或[搜索键]

    alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(Di ...

  6. 11.Android之常用对话框AlertDialog学习

    (1)首先我们写个简单的AlertDialog对话框,要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法,然后创建对话框可以设置对话框的属性,比如 ...

  7. android中常见对话框之一AlertDialog

    在Android应用中,有多种对话框:Dialog.AlertDialog.ProgressDialog.时间.日期等对话框. (1)Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽 ...

  8. Android应用开发学习之AlertDialog对话框

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文中我们通过一个例子来看AlertDialog对话框的实现,其运行效果如下: 主布局文件main.xml内容如下: ...

  9. Android中弹出对话框,AlertDialog关键代码

    写在这里便于以后查看. Android中弹出对话框的关键代码: btn01.setOnClickListener(new OnClickListener() { @Override public vo ...

随机推荐

  1. 史上更全的 MySQL 高性能优化实战总结!

    1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 ...

  2. scala 获取当前时间的两种方式

    在编写程序时,有时需要获取当前时间,这在记录异常信息.获取程序运行耗时很有用处 方式一: val time1=System.currentTimeMillis() 这种方式获取的是程序运行到此的毫秒数 ...

  3. 面试乐融集团Python开发工程师有感

    这是笔者第一次面试,,乐融集团位于朝阳区朝阳公园的乐融大厦.是下午两点的笔面试,笔者是一点半到的,然后在里面等了会,开始笔试 笔试题并不是太难,就是考的比较宽,因为笔者是校招,所以笔试题出来了数据结构 ...

  4. Python学习:4.运算符以及数据类型解析

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...

  5. 串口UART学习笔记(一)

    买了一个开发板学习FPGA,找到的各种东西就记录在这个博客里了,同时也方便把自己不会的问题找到的结果记录一下,都是自己手打,所以可能说的话不那么严谨,不那么精准,看到的人要带着自己的思考去看,记住尽信 ...

  6. Java基础之final和abstract关键字

    final final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编 ...

  7. java常见类

  8. jxls-1.x导出excel入门——基本操作

    请注意,一下内容均基于1.x版本,2.x版本将另开随笔记录 一.概述  JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格式报表.它采用标签的方式,类似J ...

  9. Jsp刷新分页模板,很全

      1.用来实现上一页下一页,我直接写到查询页面上 <%--page的分页--%> <style type="text/css"> a { color: # ...

  10. NB-IOT连接基站需要的步骤

    本次使用华为海思Hi2110芯片,657SP3版本软件,利尔达的NB-IOT模块,串口波特率9600,基本需要5个AT指令. 1.上电之后设置IEMI号码,见模组上面的标签.AT+NTSETID=1, ...