如果是当前Activity弹出的dialog则不会执行Activity任何生命周期中的方法,Android对话框采用异步方式,因此具有很好的灵活性,然而,如果用惯了主要使用同步对话框的编程框架(如javaScript对话框),那么开发者可能会觉得异步对话框不那么直观。在同步对话框中,对话框之后的代码不会马上执行,而是在对话框消失之后才会执行。这意味着,下一行代码可用于询问所点击的按钮或输入对话框的文本信息。然而,Android对话框是异步的。即使用户没有对对话框操作,只要对话框一显示,下一行代码就会立即执行。应用程序通过实现对话框的回调方法反馈用户与对话框的交互。

         此外,这还意味着应用程序能够在代码中清除对话框,这是非常强大的功能。如果应用程序执行某些人物时显示“正在处理”的消息,那么在应用程序完成此任务时,就可以在代码中清除这个对话框。

        注意:Dialog类是对话框的基类。对话框虽然可以在界面上显示,但是Dialog不是View类的子类。而是直接继承

java.lang.Object类,Dialog也有自己的生命周期,其生命周期由创建她的Activity进行管理。

        对话框常见的形式:

AlertDialog_android

还有自定义对话框。

AlertDialog常用的方法:

AlertDialog_ide_02

代码:

package com.example.alertdialog;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

	String [] single_list = {"男","女","女博士","程序员"};
	String [] multi_list = {"篮球","足球","男生","女生"};
	String [] item_list = {"项目经理","策划","测试","美工","程序猿"};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initEvent();
	}
    /**
     * 初始化点击事件
     */
			
	private void initEvent() {
		// TODO Auto-generated method stub
		findViewById(R.id.dialog_btn1).setOnClickListener(
				new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						showDialog1();
					}

				});
		findViewById(R.id.dialog_btn2).setOnClickListener(
				new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						showDialog2();
					}
				});
		findViewById(R.id.dialog_btn3).setOnClickListener(
				new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						showDialog3();
					}
				});
		findViewById(R.id.dialog_btn4).setOnClickListener(
				new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						showDialog4();
					}
				});
		findViewById(R.id.dialog_btn5).setOnClickListener(
				new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						showDialog5();
					}
				});
	}

	/**
	 * 显示确认对话框
	 */
	protected void showDialog1() {
		// TODO Auto-generated method stub
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("确认对话框"); //设置标题
		builder.setIcon(R.drawable.ic_launcher);//设置图标
		builder.setMessage("确认对话框提示内容"); //设置内容
		builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "点击了确定按钮!",
						Toast.LENGTH_SHORT).show();
				dialog.dismiss();
			}
		});
		builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "点击了取消按钮!",
						Toast.LENGTH_SHORT).show();
				dialog.dismiss();
			}
		});
		AlertDialog dialog = builder.create();
		dialog.show();
	}
	/**
	 * 显示单选按钮对话框
	 */
	protected void showDialog2() {
		// TODO Auto-generated method stub
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("选择性别");
		builder.setIcon(R.drawable.ic_launcher);
		//第一个参数为待选项数组, 第二个参数为默认选中选项所在数组的下标, 为该Dialog内的所有选项设置事件监听器
		builder.setSingleChoiceItems(single_list, 0, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				String str = single_list[which];
				Toast.makeText(MainActivity.this, "这个人是" + str + "!",
						       Toast.LENGTH_LONG).show();
			}
		});
		AlertDialog dialog = builder.create();//获取dialog
		dialog.show();//显示对话框
	}
	/**
	 * 显示多选按钮对话框
	 */
	protected void showDialog3() {
		// TODO Auto-generated method stub
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("爱好");
		builder.setIcon(R.drawable.ic_launcher);
		builder.setMultiChoiceItems(multi_list, null, new DialogInterface.OnMultiChoiceClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				// TODO Auto-generated method stub
				if(isChecked) {
					Toast.makeText(MainActivity.this, "我喜欢上了"+multi_list[which], Toast.LENGTH_LONG).show();
				}else {
					Toast.makeText(MainActivity.this, "我不喜欢"+multi_list[which], Toast.LENGTH_LONG).show();
				}
			}
		});
		
		AlertDialog dialog = builder.create();
		dialog.show();
	}
	/**
	 * 显示列表对话框
	 */
	protected void showDialog4() {
		// TODO Auto-generated method stub
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("部门列表");//显示标题
		builder.setIcon(R.drawable.ic_launcher);//设置图标
		builder.setItems(item_list, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, item_list[which], Toast.LENGTH_LONG).show();
			}
		});
		AlertDialog dialog = builder.create();
		dialog.show();
	}
	/**
	 * 显示自定义对话框
	 */
	protected void showDialog5() {
		// TODO Auto-generated method stub
		LayoutInflater inflater = LayoutInflater.from(this);
		View view = inflater.inflate(R.layout.dialog_layout, null);
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("自定义对话框");//设置标题
		builder.setIcon(R.drawable.ic_launcher);//设置图标
		builder.setView(view);
		AlertDialog dialog = builder.create();//获取dialog
		dialog.show();//显示对话框
	}



}