1、AlertDialog类的创建
public AlertDialog create()
public AlertDialog show()
create()和show()方法都返回了AlertDialog对象,它们的区别是create()方法虽然返回了AlertDialog对象,但并不显示对话框;而show()方法在返回AlertDialog对象之前会立即显示对话框。
分步显示对话框:
//由于AlertDialog类的构造放大被声明成protected方法,因此不能直接使用new 关键字来创建AlertDialog类的对象实例。需要使用AlertDialog中定义的一个内嵌类,即Builder类
AlertDialog ad=new AlertDialog.Builder(this).setTitle("title").create();
ad.setMesssage("信息");
ad.show();
一次性显示对话框:
AlertDialog ad=new AlertDialog.Builder(this).setTitle("title").setMessage("信息").show();
2、其中确认和取消对话框按钮
//确认按钮
public Builder setPositiveButton (CharSequence text,fnal onClickListener listener)
public Builder setPositiveButton(int textId,final OnClickListener listener)
//取消按钮
public Builder setNegativeButton (CharSequence text,fnal onClickListener listener)
public Builder
setNegativeButton
(int textId,final OnClickListener listener)
以上第一个参数可以使用字符串资源ID或字符串值以及字符串变量来设置这个参数,尽量使用资源ID的方式来指定参数值,方便修改文字
第二个参数表示单击按钮触发的事件,该类型是DialogInterface.OnClickListener,需要传入DialogInterface.OnClickListener接口的对象。
综上,创建含确认和取消按钮对话框的方式是:
new AlertDialog.Builder(this).setTitle("对话框的标题").setPositiveButton("按钮的提示","事件").setNegativeButton("按钮的提示","事件").show();
3、创建“询问”是否删除文件的【确认/取消】对话框
new AlertDialog.Builder(this).setIcon(R.drawable.question).setTitle("是否删除文件").setPositiveButton("确认",
//创建DialogInterface.OnClickListener对象实例,当单击按钮时调用onClick方法
new DialogInteface.OnClickListener)(){
public void onClick(DialogInterface dialog,int whichButton){
//单击确定按钮后,显示一个无按钮的对话框
new AlertDialog.Builder(Main.this).setMessage(
"文件已经被删除.").create().show();
}).show();
}
setPositiveButton的第二个参数的数据类型是DialogInterface.OnClickListener,而不是View.OnClickListener。
4、带三个按钮的对话框
new AlertDialog.Builder(this)setTitle("title")
.setPositiveButton(.......)
.setNeutraButton(.......)
.setNegativeButtton(........).show();
1)上面三个的调用顺序可以是任意的,但是实际上方法设置后的按钮的顺序是固定不变的;
2)使用AlertDialog类创建的对话框最多只能有3个按钮,因此就算多次调用这3个设置对话框按钮的方法,最多也只能显示3个扭。
3)这三个设置对话框按钮的方法虽然都可以调用多次,但系统只以每个方法的最后一次调用为准。
例如,new AlertDialog.Builder(this).setPositiveButton("确定1",...).setPositiveButton("确定2",...)
虽然调用了两次setPositiveButton方法,但系统只以最后一次调用为准,也就是说只会为对话框添加一个【确认2】按钮,
而不会将【确认1】和【确认2】按钮都加到对话框上。
5、自定义对话框
直接使用XML布局文件或代码创建视图对象,并将这些视图对象添加到对话框中
AlertDialog.Builder类的 setView方法可以将视图对象添加到当前的对话框中
new AlertDialog.Builder(this)
.setIcon(R.drawable.alert_dialog_icon).setTitle("自定义对话框")
.setView(......)
.show();
LinearLayout loginLayout=(LinearLayout)getLayoutInflater().inflate(R.Layout.login,null);
new AlertDialog.Builder(this).setIcon(R.drawable.login)
.setTitle("用户").setView(loginLayout)
.setPositiveButton("登录",new DialogInterface.OnClickListener()){
}...........
).show();
6、用Activity托管对话框
当调用Activity类的showDialog方法时,系统会调用onCreateDialog方法来返回一个Dialog对象
(AlertDialog是Dialog类的子类)。showDialog方法和onCreateDialog方法一样,也有一个int 类型的
id 参数。该参数值将传入onCreateDialog方法。可以利用不同的id来建立多个对话框