由于AlertDialog类的构造方法被声明成protected方法,因此,不能直接使用new关键字来创建AlertDialog类的对象实例。为了创建AlertDialog对象,需要使用Builder类,该类是在AlertDialog类中定义的一个内嵌类,首先必须创建AlertDialog.Builder类的对象实例,然后通过AlertDialog.Builder类的show方法显示对话框。
AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。
要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。
使用AlertDialog.Builder创建对话框需要了解以下几个方法:
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton :普通按钮
setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
[color=red][b]代码:[/b][/color]
AlertDialog dialog = newAlertDialog.Builder(MainActivity.this).setIcon(null).setTitle("dialog").setMessage("nihao").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
MainActivity.this.finish();
}
// 如果都使用setPositiveButton()方法,则只显示一个(后面的那个),前面的被覆盖
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
}).create();
//显示对话框也可以使用showDialog(int id)方法显示对话框
dialog.show();
注意:
1、 setPositiveButton()和setNegativeButton()方法中的第二个参数的数据类型是android.content.DialogInterface.OnclickListener,而不是View中的OnClickListener。
2、 使用show方法显示对话框是异步的。也就是说,当调用AlertDialog。Builder.show或AlertDialog.show方法显示对话框后,show方法会立即返回,并且继续执行后面的代码。
/**三个按钮(覆盖,忽略,取消)对话框的创建*/
new AlertDialog.Builder(this).setTitle()
.setPositiveButton()
.setNeutralButton(…, …)
.setNegativeButton().show()
注意:
1、 setPositiveButton(),setNeutralButton(),setNegativeButton()的调用顺序可以是任意的,但无论调用顺序是什么,setPositiveButton()方法设置的按钮总会排在左起第1位,setNeutralButton()方法设置的按钮总会排在左起第2位,setNegativeButton()方法设置的按钮总会排在左起第3位。
2、 使用AlertDialog类创建的对话框最多只能有3个按钮。
3、 这3个按钮的方法虽然可以被调用多次,但系统只以每一个方法最后一次调用为准。(前面的会自动被覆盖)
简单列表对话框
final String[] str=new String[] { "你好1", "你好2", "你好3" };
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setItems(str,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0,int which) {
/**使用which返回你所点击的内容*/
final AlertDialog ad=new AlertDialog.Builder(MainActivity.this).setMessage("您选择了: "+which+str[which]).show();
Handler handler=new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
/**ad变量要使用final关键字定义,因为在隐式实现Runnable接口的run方法中需要访问final变量*/
/**调用AlertDialog类的dismiss方法关闭对话框,也可以调用cancel方法*/
ad.dismiss();
}
},5000);
}
}).create();
dialog.show();
在DialogInfterface接口中,有两个用于关闭对话框的方法:dismiss和cancel。这两个方法的功能完全相同,都是关闭框。所不同的是,cancel方法除了关闭对话框外,还会调用DialogInterface.onCancleListener接口中的onCancel方法。DialogInterface.onCancelListener对象需要使用AlertDialog.Builder类中的setOnCancelListener方法进行设置。dismiss方法和cancel方法类似,会调用DialogInterface.onDismissListener接口中的onDismiss方法。