Day14、随处可见的对话框

日常生活中我们随处可见对话框,上面有很多提示信息,更加方便提示用户进行不同的操作。

一、对话框的两个特点和一些常见的对话框

1.当弹出对话框是会结束UI线程(即主线程);

2.当前的Activity会失去焦点;

3.消息对话框、确认对话框、列表对话框、单选和多选对话框、自定义对话框

二、对话框的组成(一般有四部分组成)

1.图标

2.标题

3.内容

4.按钮

三、那么如何创建一个对话框呢?(四步组成)

1.第一步创建AlertDialog.Builder对象(建造者模式)

2.第二步设置图标、标题、内容和按钮等区域

3.第三步调用create()方法来创建(一般自动调用)

4.第四步调用show()方法来显示

四、点击跳转界面和长按弹出对话框的业务逻辑

1.接着上面的学的ListView来实现常见的操作,在日常生活中,我们经常聊qq,在聊天列表中,但我们点击某一行时,会进入聊天界面,当我们长按某一行时,会弹出置顶和删除小提示。

2.MainActivity.java代码如下

package com.oldtogether.adapterdemo2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity4 extends ActionBarActivity implements OnItemClickListener, OnItemLongClickListener {
    // 创建数组,采用for循环进行遍历
    private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq,
            R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin, R.drawable.weixin, R.drawable.hongx,
            R.drawable.xm };
    private String[] titles = new String[] { "卖萌大象", "圣诞帽子", "愤怒南瓜", "难过表情", "调皮表情", "我倩的笑脸表情", "oldtogether爱心", "微信",
            "粉色少女心", "一代撸" };
    private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20",
            "版本:5.20", "版本:1.23", "版本:2.21", "版本:2.40", };
    private String[] sizes = new String[] { "大小:32.01M", "大小:32.02M", "大小:23.01M", "大小:11.01M", "大小:41.01M",
            "大小:11.01M", "大小:33.01M", "大小:33.01M", "大小:33.01M", "大小:33.01M", };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);

        // 1、过的ListView对象
        ListView lv = (ListView) findViewById(R.id.lv_play);
        // 2、数据源
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < titles.length; i++) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("logo", imageIds[i]);
            map.put("title", titles[i]);
            map.put("version", versions[i]);
            map.put("size", sizes[i]);
            list.add(map);
        }
        // 3、设置适配器
        MyAdapter3 adapter3 = new MyAdapter3(this);
        adapter3.setList(list);// 传入数据
        // 4、关联适配器
        lv.setAdapter(adapter3);
        // 5、为ListView设置事件监听器(一下两个常用事件),让主MainActivity2实现接口,并重写方法
        lv.setOnItemClickListener(this);
        lv.setOnItemLongClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        /* 创建了一个意图对象,调用setClass方法表明“在那个Activity中调用那个Activity”次意图*/
        Intent intent = new Intent();
        intent.setClass(getApplicationContext(), DetailActivity.class);

        //获得点击行的数据
        HashMap <String,Object> itemMap= (HashMap<String,Object>) parent.getItemAtPosition(position);
        intent.putExtra("index", ""+position);//获得编号
        intent.putExtra("title", ""+itemMap.get("title"));//获得标题
        startActivity(intent);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        AlertDialog.Builder  builder=new AlertDialog.Builder(this);
        builder.setIcon(R.drawable.ic_launcher);
        builder.setTitle("消息提示");
        builder.setMessage("这是一个简单的标题");
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            //点击对话框中的确定按钮会出现一个Toast提示框
                Toast.makeText(MainActivity4.this, "点击了确定", Toast.LENGTH_LONG).show();
            }
        });
        builder.create().show();
        return true;
        /*
         * 返回值代表了事件的消化 1、true:表示消化掉事件,事件不会继续传递 2、false:表示不消化事件,事件继续传递
         * 结论:如果希望长按事件后,不在出现点击事件,则应将返回值设置为true
         */
    }
}

3.代码简洁之“连点”

1.通过创建者模式获得Builder对象,然后通过连点方式调用其方法可使代码简化;
2.连点使用的原则是,所调用的方法返回值是当前对象本身;
3.下面是通过连点在长按方法中实现此相同功能的代码。
@Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("消息提示")
        .setMessage("这是一个简单的标题")
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity4.this, "点击了确定", Toast.LENGTH_LONG).show();
            }
        })
        .show();
        return true;
    }

4.运行结果

五、上面是消息对话框的实现,再次紧接着学习确认对话框

1.随处可见的确认对话框,用途:经常用于一些征求用户决定的操作,比如退出数据、删除数据、确认支付等。

2.直接贴代码

package com.oldtogether.adapterdemo2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity4 extends ActionBarActivity implements OnItemClickListener, OnItemLongClickListener {
    // 创建数组,采用for循环进行遍历
    private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq,
            R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin, R.drawable.weixin, R.drawable.hongx,
            R.drawable.xm };
    private String[] titles = new String[] { "卖萌大象", "圣诞帽子", "愤怒南瓜", "难过表情", "调皮表情", "我倩的笑脸表情", "oldtogether爱心", "微信",
            "粉色少女心", "一代撸" };
    private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20",
            "版本:5.20", "版本:1.23", "版本:2.21", "版本:2.40", };
    private String[] sizes = new String[] { "大小:32.01M", "大小:32.02M", "大小:23.01M", "大小:11.01M", "大小:41.01M",
            "大小:11.01M", "大小:33.01M", "大小:33.01M", "大小:33.01M", "大小:33.01M", };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);

        // 1、过的ListView对象
        ListView lv = (ListView) findViewById(R.id.lv_play);
        // 2、数据源
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < titles.length; i++) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("logo", imageIds[i]);
            map.put("title", titles[i]);
            map.put("version", versions[i]);
            map.put("size", sizes[i]);
            list.add(map);
        }
        // 3、设置适配器
        MyAdapter3 adapter3 = new MyAdapter3(this);
        adapter3.setList(list);// 传入数据
        // 4、关联适配器
        lv.setAdapter(adapter3);
        // 5、为ListView设置事件监听器(一下两个常用事件),让主MainActivity2实现接口,并重写方法
        lv.setOnItemClickListener(this);
        lv.setOnItemLongClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        /* 创建了一个意图对象,调用setClass方法表明“在那个Activity中调用那个Activity”次意图*/
        Intent intent = new Intent();
        intent.setClass(getApplicationContext(), DetailActivity.class);

        //获得点击行的数据
        HashMap <String,Object> itemMap= (HashMap<String,Object>) parent.getItemAtPosition(position);
        intent.putExtra("index", ""+position);//获得编号
        intent.putExtra("title", ""+itemMap.get("title"));//获得标题
        startActivity(intent);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        //长按之确定对话框
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("你确定要退出吗?")
        .setNegativeButton("取消", null)//null,说明不进行自定义的任何操作,只是单纯的关闭当前对话框,又停在原界面
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();//关闭当前Activity
            }
        })
        .show();
        return true;
    }
}

3.运行结果

4.补充:当点击取消是会停留在当前Activity;当点击确定会退出当前Activity,返回到模拟器主界面。

六、列表对话框

1.用途:以列表的形式展示数据、列表项可点击、需要一个数组资源作为数据源。

2.核心方法:setItems();在准备一个数组资源;

3.代码如下:

package com.oldtogether.adapterdemo2;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity4 extends ActionBarActivity implements OnItemClickListener, OnItemLongClickListener {
    // 创建数组,采用for循环进行遍历
    private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq,
            R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin, R.drawable.weixin, R.drawable.hongx,
            R.drawable.xm };
    private String[] titles = new String[] { "卖萌大象", "圣诞帽子", "愤怒南瓜", "难过表情", "调皮表情", "我倩的笑脸表情", "oldtogether爱心", "微信",
            "粉色少女心", "一代撸" };
    private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20",
            "版本:5.20", "版本:1.23", "版本:2.21", "版本:2.40", };
    private String[] sizes = new String[] { "大小:32.01M", "大小:32.02M", "大小:23.01M", "大小:11.01M", "大小:41.01M",
            "大小:11.01M", "大小:33.01M", "大小:33.01M", "大小:33.01M", "大小:33.01M", };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);

        // 1、过的ListView对象
        ListView lv = (ListView) findViewById(R.id.lv_play);
        // 2、数据源
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < titles.length; i++) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("logo", imageIds[i]);
            map.put("title", titles[i]);
            map.put("version", versions[i]);
            map.put("size", sizes[i]);
            list.add(map);
        }
        // 3、设置适配器
        MyAdapter3 adapter3 = new MyAdapter3(this);
        adapter3.setList(list);// 传入数据
        // 4、关联适配器
        lv.setAdapter(adapter3);
        // 5、为ListView设置事件监听器(一下两个常用事件),让主MainActivity2实现接口,并重写方法
        lv.setOnItemClickListener(this);
        lv.setOnItemLongClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        /* 创建了一个意图对象,调用setClass方法表明“在那个Activity中调用那个Activity”次意图*/
        Intent intent = new Intent();
        intent.setClass(getApplicationContext(), DetailActivity.class);

        //获得点击行的数据
        HashMap <String,Object> itemMap= (HashMap<String,Object>) parent.getItemAtPosition(position);
        intent.putExtra("index", ""+position);//获得编号
        intent.putExtra("title", ""+itemMap.get("title"));//获得标题
        startActivity(intent);
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        //列表对话框
        final String [] sites={"打印店","男生公寓","女生公寓","清真食堂","大众食堂","图书馆","洗浴中心"};//设置为final(常量)的原因是可以穿透作用域
        new AlertDialog.Builder(this)
        .setTitle("兰州城市学院培黎校区")
        .setItems(sites, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //参数 which代表了消息对话框中的第几项
                Toast.makeText(MainActivity4.this, "您选择了"+sites[which], Toast.LENGTH_LONG).show();
            }
        })
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //关闭的对话框的第二种方式,重写一个没有任何逻辑的空方法
            }
        })
        .show();
        return true;
    }
}

4.运行结果

七、单选对话框

1.单选对话框,用途:需要用户进行单行选择是进行使用;核心方法:setSingleChoiceItems();

2.实现步骤

1).准备一个数组资源(一般设置为常量数组,为了方便穿透作用域);
2).调用setSingleChioceItems()设置单选列表项。

3.代码实现(直接在onItemLongClick写Dialog相关代码,其他代码一样)

//在主类中的全局变量1、暂存用户所选的评分级别;(另外如果将此变量初始值设为0,直接点击确定会出现1星评分,有bug)2、方便穿透作用域;
int selectedId = -1;
    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        //长按之单选对话框
        final String [] stars={"1星","2星","2星","3星","4星","5星"};//设置为final(常量)的原因是可以穿透作用域
        new AlertDialog.Builder(this)
        .setTitle("大胸弟,来个5星的评分吧!")
        .setSingleChoiceItems(stars, -1, new DialogInterface.OnClickListener() {
            /*
             * 第一个参数:所要显示的资源数组;
             * 第二个参数:在单选对话框列表中默认情况先所选择的行标(这里设置为-1的原因是数组默认情况先下标从0开始,如果将此参设置为0,跳出单选对话框时默认情况下会为1星评分,有bug);
             * 第三个参数:点击某行事件,自定义业务逻辑代码(这里只用简单的Toast来实现);
             * 补充:dialog.dismiss()让对话框消失。
             */
            @Override
            public void onClick(DialogInterface dialog, int which) {
                selectedId = which;//在用户单选时起到一个暂存的作用,方便确定是被引用
                Toast.makeText(MainActivity4.this, "您当前选择了:"+stars[which], Toast.LENGTH_LONG).show();
            }
        })
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity4.this, "您最终的决定是:"+stars[selectedId], Toast.LENGTH_LONG).show();
            }
        })
        .setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //空操作的方法
            }
        })
        .show();
        return true;
    }

4.运行结果

八、多选对话框

1.多选对话框。用途:提供用户进行多项选择;核心方法setMultiChoiceItems();(multi:英语中多的意思)

2.实现步骤

1).准备一个数组资源;
2).调用setMultiChoiceItems()方法设置多选项列表;

3.代码的实现(同理直接贴onItemLongClick()方法代码)

ArrayList<Integer> choice = new ArrayList<>();//创建一个ArrayList用来保存在Dialog中所选择的选项,同理设置为全局变量为了穿透作用域
    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        //长按之多选框对话框
        final String [] interests={"看书","打篮球","大lol","听音乐","看电影","跑步"};//设置为final(常量)的原因是可以穿透作用域
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.ic_launcher)
        .setTitle("你的爱好是什么?")
        /*
         * setMultiChoiceItems()方法中的三个参数
         * 第一个参数:资源数组;
         * 第二个参数:默认情况下的初始值,这里因为是多选,所以设置为boolean类型的数组;
         * 第三个参数:多选框的点击事件;
         *
         */
        .setMultiChoiceItems(interests,
                new boolean []{false,false,false,false,false,false},
                new DialogInterface.OnMultiChoiceClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        /*
                         * 第一个参数:dialog对象;
                         * 第二个参数:多选对话框中用户所选中的项;
                         * 第三个参数:是否选中,true为选中,false为没有选中
                         *
                         */
                        //选中则添加,后悔是时还可以remove掉
                        if(isChecked){
                            choice.add(which);
                        }else{
                            choice.remove(which);
                        }
                        Toast.makeText(MainActivity4.this, "您当前的选择是:"+choice.toString(), Toast.LENGTH_LONG).show();
                    }
                })
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity4.this, "您最终的决定是:"+choice.toString(), Toast.LENGTH_LONG).show();
            }
        })
        .setNegativeButton("取消", null)
        .show();
        return true;
    }
}

4.运行结果

九、心得总结

1.提到对话框可以直接脑补出对话款的组成,和创建对话框的步骤;

2.在单选对话框中设置默认初始值时,“-1”的巧用,关键点是数组下标从0开始,容易出现bug;

3.关闭对话框的两种方法(在点击负面按钮时)。第一种:在次方法中的第二个参数添加一个重操作即没有任何逻辑代码点击事件即可;第二种:直接将第二个参数设置为null;

4.两次经典的穿透作用域(附带魔法和物理伤害)。第一次在定义数据资源的时候,将数组资源用final修饰,让其为常量,方便在其他方法中调用,即穿透作用域;第二次在创建单选和多选对话框时,setSingleChioceItems()和setMultiChoiceItems()方法中有时候用户可能会修改第一次的选择,而将次选择暂存在一个最外层类的成员变量中(这里的int selectedId和泛型ArrayList对象),方便在点击确定按钮即调用onClick方法是被利用,同样再次穿透了作用域;

5.总之,日常生活中常见各种对话框,合理利用对话框会更好的实现界面与用户之间的交流。

时间: 2024-10-14 20:47:53

Day14、随处可见的对话框的相关文章

用dialog在前台实现一个简单的UI对话框

<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>对话框部件(Dialog Widget)演示</title> <link rel="stylesheet" href="//apps.bdimg.com/libs/jqueryui/1.10.4/css/jquery-ui.m

bootstrap中的对话框-dialog

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> <meta http-

bootstrap中的对话框-dialog-2

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> <meta http-

C#WebBrowrse拦截下载对话框

为了实现这个功能,可算是折腾不少时间,网上搜素出来的结果基本都是如何屏蔽警告对话框.后来请教一个技术大牛(程序员之窗的主要作者Starts_2000),他用C++实现了,他尝试了下C#也没有解决,就忙其他的去,大牛时间一般都比较宝贵,后来我就将就用那个C++动态库,那个时候我测试环境是 win7 64位 +vs2013,后来系统环境变化成 win10 +vs2015,突然就不好使了,赶紧重新编译C++源码,各种错误,感觉怎么这么不稳定. 怎么办?总不能再让别人帮忙,下次环境变化了继续问别人? 

Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:

一.使用一个全新的FireFox浏览器打开Web应用,浏览器不带任何插件,也未对浏览器做任何默认配置,但需要对浏览器属性进行配置 // 获取浏览器的所有配置文件 ProfilesIni allProfiles = new ProfilesIni(); // "Selenium" 是之前创建的profile,不带任何插件,也未对浏览器做任何默认配置 FirefoxProfile profile = allProfiles.getProfile("selenium");

Android 对话框 Dialog

对话框 Dialog 什么是对话框 对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息, 或显示某种状态.如 :  显示进度条对话框, 退出提示. 对话框的特点: 1, 当前界面弹出的小窗口. 2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户. 常用对话框: 1, 普通对话框 AlertDialog 2, 进度条对话框  ProgressDialog 3, 日期对话框    DatePickerDialog 4, 时间对话框

QT笔记之模态对话框及非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭.对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框:另一种是使用show()方法

Android新手入门2016(13)--阻塞对话框PopupWindow

上两章都说了非阻塞的对话框,今天说一下阻塞的对话框--PopupWindow 那么什么是阻塞什么是非阻塞呢?PopupWindow和AlertDialog有什么不同呢? 先说AlertDialog,弹出来之后,背面会变灰,并没有阻塞后台的进程,如果没特殊控制,点击后面灰暗处,弹框会消失掉的. 至于PopupWindow,则是弹出来,后面没有任何变化,并且阻塞该应用的进程,如果一直没退出,应用汇一直等待,点击后面也是没有反应的. 不知道为什么现在上传不了图,就不上传了,其实跟AlertDialog

第6章(3) AlertDialog(警告对话框)

分类:C#.Android.VS2015: 创建日期:2016-02-08 一.简介 AlertDialog也是Android系统当中常用的对话框之一. 在一个AlertDialog中,可以有一个Button.两个Button.3个Button.另外,还可以自定义对话框的样式,比如带有单选按钮的对话框.带有复选框的对话框等. 1.基本用法 一般通过AlertDialog.Builder.Create()方法来构造该对话框,然后就可以通过dialog调用对应的方法.常用方法如下: SetTitle