Android 创建对话框
对话框是显示在当前的 Activity 前面的小窗口。位于后面的 Activity 失去焦点, 而由这个对话框处理用户的交互。
对话框常用于打断用户,执行小型的与当前程序有关的任务,例如显示进度条或登录窗口。
Dialog 类是所有对话框的基类,但是一般不去实例化Dialog类,而应该实例化下面这些Dialog子类:
AlertDialog 可构造大多数的UI,是最常使用的对话框。
ProgressDialog 用于显示进度的对话框,它是AlertDialog的子类
DatePickerDialog 用于选择日期
TimePickerDialog 用于选择时间
另外,可通过子类化Dialog,定义自己的对话框。
1、显示对话框(Showing a dialog)
对话框作为Activity的一部分,一般在Activity的 onCreateDialog(int) 回调方法中创建对话框。使用该回调方法创建完对话框
之后,Android系统会自动管理这些对话框的状态,并且使得Activity成为这些对话框的owner。这些对话框也会继承Activity的一些
性质。例如,Menu按键呼出来的菜单、音量调节功能。
注意:如果在onCreateDialog(int) 之外创建对话框,那么这个对话框是没有与Activity关联的。可用 setOwnerActivity(Activity)
建立关联。
调用 showDialog(int) 以显示对话框。
在对话框显示之后,Android 还可以调用 onPrepareDialog(int,Dialog) 。如果定义了该方法,在对话框每次显示都会调用该方法。
如果没有定义,则每次对话框都显示前面的状态。
注释:对话框的ID是我们自己定义的。例如 static final int DIALOG_MESSAGE_ID = 0;
static final int WUXIAO_DIALOG = 1;
2、关闭对话框(Dismissing a dialog)
调用 Dialog对象的 dismiss() 方法 或者 调用Activity类中的 dimissDialog(int) 来关闭对话框。(Activity的dismissDialog(int) 也是
调用Dialog对象的 dismiss() 方法。)
调用removeDialog(int) 将彻底销毁一个对话框(包括其内部状态)
3、关闭事件监听器(Using dimiss listeners)
如果你想在关闭对话框之后立即执行一些操作,可以用on-dismiss listeners。
首先implements DialogInterface.OnDismissListener 接口,覆盖其中的 onDismiss(DialogInterface) 方法。然后,对需要
监听的对话框对象调用 setOnDismissListener() 。(提示:这里跟UI事件的响应方法是一样的。都是监听器)。
注意:dismiss 和 cancel 的区别。一个对话框可以被 dismiss(关闭) 也可以被 cancel(取消)。比如按下后退按钮,则是cancel。cancel事件应该用 DialogInterface.OnCancelListener
接口 和 setOnCancelListener()
方法。