弹出对话框
在GUI程序中,有时需要弹出对话框来提示一些信息。这些对话框比一个独立的屏幕简单,在Android中弹出式对话框不同于表示一个屏幕的活动,它通常用于简单的功能处理。
对话框的父类是android.app.Dialog,通过构建类android.app.AlertDialog来实现弹出式对话框,可以使用AlertDialog.Builder和不同的参数来构建对话框。
参考示例程序:Dialog(ApiDemo => App=>Dialog)
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
源代码:com/example/android/apis/app/AlertDialogSamples.java
布局文件:alert_dialog.xml
Dialog程序的运行结果如图所示:
图 Dialog程序的运行结果
通过点击屏幕上的不同按钮(第4个按钮除外)将会启动不同的对话框。
实现方法是继承onCreateDialog()函数,返回一个Dialog类型:
@Override
protected Dialog onCreateDialog(int id) {
}
onCreateDialog()函数的参数id是区分对话框的标示,当调用对话框的时候需要调用showDialog()。
public final void showDialog (int id)
showDialog()函数也是通过id来区分对话框。通过showDialog()和onCreateDialog()函数可以统一活动中的对话框。
6.6.1. 提示信息和两个按钮的对话框
第1个按钮(OK Cancel dialog with a message)启动一个提示信息和两个按钮的对话框,如图所示:
图 提示信息和两个按钮的对话框
68
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
代码实现的片断如下所示:
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_two_buttons_title)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* 左键事件 */
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* 右键事件 */
}
})
其中,setPositiveButton表示设置的左面的按钮,setNegativeButton表示设置的右面的按钮,这两个按钮是确定的,但是可以设置其显示的字符和点击后的行为函数。
6.6.2. 提示信息和三个按钮的对话框
第2个按钮(OK Cancel dialog with a long message)启动一个提示信息和三个按钮的对话框,如图所示:
图 提示信息和三个按钮的对话框
代码实现的片断如下所示:
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_two_buttons_msg)
.setMessage(R.string.alert_dialog_two_buttons2_msg)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* 左键事件 */
}
})
.setNeutralButton(R.string.alert_dialog_something, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* 中键事件 */
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* 右键事件 */
}
})
本对话框包含了3个按钮,与上一个例子的主要区别在于这里使用了setNeutralButton()表示的设置中间的按钮