一、创建一个一般的弹出对话框AlertDialog:

     创建对话框 一个对话框一般是一个出现在当前Activity之上的一个小窗口。 处于下面的Activity失去焦点, 对话框接受所有的用户交互。对话框一般用于提示信息和与当前应用程序直接相关功能。


二、创建AlertDialog通常使用的方法使用到的方法:

setIcon();setTitle();setMessage();setView();setAdapter();setPositiveButton();setNegativeButton();setNeutralButton();setMultiChoiceItems();setSingleChoiceItems();create();show()...

关于AlertDialog的常见用法_第1张图片

三、创建AlertDialog时,多数包含的共同方法:

        // 创建面板 , 创建Buidker构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 绘制面板 添加需要内容并进行显示
        builder.setTitle("普通提示").setMessage("确定退出吗?").create().show();

wKiom1YWIffBow0JAAA_FfCYKto214.jpg


四、普通对话框中通常使用的控件:

    1)普通对话框添加按钮(Dialog的按钮显示在安卓4.0+和5.0+中不同,5.0以后不在存在边框,默认的按钮是横排,每个按钮都有固定位置。如果不注意顺序的话,可能造成文字没有间距),创建步骤:

        1.创建AlertDialog.Builder对象。
            例如:AlertDialog.Builder builder = new  AlertDialog.Builder(this);


        2.通过builder设置普通对话框。

            例:builder=builder.setTitle().setMessage().setPositiveButton().setNegativeButton().setNe         utralButton();

        3.将设置好的builder通过使用create()方法转换成为AlerDialog对象
            例:AlerDialog alertdialog = builder.create();

        4.调用show()方法显示。
            例:alertdialog.show();

关于AlertDialog的常见用法_第2张图片

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
/**
 * 根据要求设置布局res/layout/xx.xml文件
 * 
 * 为xx.xml文件中的控件添加点击事件,空间的点击事件引发的动作是普通弹出对话框。
 * 弹出对话框通常最多设置三个按钮(弹出对话框中按钮顺序为1,3,2),分别使用方法setPositiveButton(name,onclick).setNegativeButton(name,onclick).setNeutralButton(name,onclick).create.show();
 * 其中参数name :弹出对话框中的按钮名称;onclick :弹出对话框中对应按钮的点击事件。
 * 
 * 创建对话框的步骤
 * 1.创建Builder构建器  AlertDialog.Builder builder
 * 2.给Builder构建器去setXXX内容
 * 3.如果setXXX内容设置完毕,将Builder构建器通过create()方法转成AlertDialog;
 * 4.让转换后的builder,调用AlertDialog的show()方法将对话框进行显示。
 * 
 * @author Administrator
 *
 */
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void showClick(View view) {
        // 创建面板 , 创建Buidker构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 绘制面板 添加需要内容
        builder = builder.setTitle("普通提示").setMessage("确定退出吗?").setIcon(R.drawable.ic_launcher);
        builder.setPositiveButton("确定",
                /**
                 * 添加第一个按钮
                 */
                //setPositiveButton  第一参数:1.按钮上面的文字;
                //第二个参数:按钮上面的单击事件。
                new OnClickListener() {
                    /**
                     * DialogInterface dialog:按钮所依赖的对话框
                     * int which:索引值
                     */
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("builder", "---->"+which);
                        dialog.dismiss();//设置对话框消失
                        // 关闭activity
                        MainActivity.this.finish();
                    }
                }).setNegativeButton("取消", new OnClickListener() {
                    /**
                     * 添加第二个按钮
                     */
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("builder", "setNegativeButton" + which);
                        dialog.dismiss();
                    }
                }).setNeutralButton("忽略", new OnClickListener() {
                    /**
                     * 添加第三个按钮
                     */
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("builder", "setNeutralButton"+which);
                        
                    }
                }).create().show();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

    2)弹出对话框显示单选框和复选框,创建步骤:

        1.创建AlertDialog.Builder对象。
            例如:AlertDialog.Builder builder = new  AlertDialog.Builder(this);

        2.通过builder设置普通对话框。

            例:builder = builder.setTitle().setMessage().setMultiChoiceItems().

            setSingleChoiceItems();
            在设置复选框的时候结合了按钮一起使用。

        3.将设置好的builder通过使用create()方法转换成为AlerDialog对象
            例:AlerDialog alertdialog = builder.create();

        4.调用show()方法显示。
            例:alertdialog.show();

关于AlertDialog的常见用法_第3张图片关于AlertDialog的常见用法_第4张图片

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
    private TextView tv_show;
    String str[] = {"桌球","高尔夫","保龄球","篮球","旅游","瑜伽"};
    String goods[] = {"篮球鞋","上衣","短裤","羽绒服","T恤"};
    //存放多选项的集合
    List lists = new ArrayList();
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_show = (TextView) findViewById(R.id.tv_show);//初始化显示文本框
        
    }
    //添加按钮点击响应事件
    public void click(View view){
        switch (view.getId()) {
        //复选按钮单击事件
        case R.id.btn1:
            AlertDialog.Builder builder2= new AlertDialog.Builder(this);
            builder2.setTitle("多项选择").setMultiChoiceItems(goods, new boolean[]{false,false,false,false,false}, new OnMultiChoiceClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    if (isChecked) {
                        lists.add(goods[which]);
                    }else{
                        lists.remove(goods[which]);
                    }
                }
            }).setPositiveButton("提交", new OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tv_show.setText(lists.toString());
                    dialog.dismiss();
                }
            }).setNegativeButton("取消", new OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tv_show.setText("没有选中商品");
                    dialog.dismiss();
                    
                }
            }).create().show();
            break;
        //单选按钮单击事件
        case R.id.btn2:
            AlertDialog.Builder builder= new AlertDialog.Builder(this);
            builder.setTitle("请选择:").setSingleChoiceItems(str, 0, new OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Log.i("builder", "---->"+which);
                    String choice = str[which];
                    tv_show.setText(choice);
                    dialog.dismiss();
                }
            }).setIcon(R.drawable.ic_launcher).create().show();
            break;
        default:
            break;
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}


    3)为普通对话框中添加View控件(以EditText为例),创建步骤:

        1.创建AlertDialog.Builder对象。
            例如:AlertDialog.Builder builder = new  AlertDialog.Builder(this);

       2.通过builder设置普通对话框。
            例:builder = builder.setTitle().setMessage().setView();
            视图同样与按钮结合使用。

       3.将设置好的builder通过使用create()方法转换成为AlerDialog对象
            例:AlerDialog alertdialog = builder.create();

       4.调用show()方法显示。
            例:alertdialog.show();

关于AlertDialog的常见用法_第5张图片

    下面的带吗是一个简单的小应用,根据名字测试靠什么吃饭,代码如下:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
    private TextView tvresult;
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvresult = (TextView) findViewById(R.id.tvresult);
        
    }
    public void click(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        
        LayoutInflater inflater = getLayoutInflater();//创建布局填充器    在activity中使用;
        
        View view1 = inflater.inflate(R.layout.item, null);
        et = (EditText) view1.findViewById(R.id.edit);
        builder.setTitle("进行测试").setView(view1).setPositiveButton("提交", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //获取edittext的值
                String msg = et.getText().toString().trim();
                int r = msg.hashCode();
                Log.i("aaa", r+"");
                
                tvresult.setVisibility(View.VISIBLE);
                
                if (r%2 == 0) {
                    tvresult.setText(msg+"靠大脑吃饭");
                }else if(r%3 == 0){
                    tvresult.setText(msg+"靠脸皮吃饭");
                }else if(r%5 == 0){
                    tvresult.setText(msg+"靠手吃饭");
                }else if(r%7 == 0){
                    tvresult.setText(msg+"靠逗比吃饭");
                }else if(r%11 == 0){
                    tvresult.setText(msg+"靠老婆吃饭");
                }else {
                    tvresult.setText(msg+"靠丐帮吃饭");
                }
                dialog.dismiss();
                
            }
        }).setNegativeButton("取消", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                
            }
        }).create().show();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

五、总结:

        普通对话款在Android开发中应用较为广泛,在普通对话框里面通常包含按钮,图标,主题,内容,选择列表,视图控件等。上述对普通对话框的基本介绍及用途介绍希望对大家有用。