当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。
下面代码将打开一个如右图所示的对话框:
new AlertDialog.Builder(context)
.setTitle("java培训")
.setCancelable(false) //设置不能通过“后退”按钮关闭对话框
.setMessage("浏览传智播客网站?")
.setPositiveButton("确认",
newDialogInterface.OnClickListener(){
publicvoid onClick(DialogInterfacedialoginterface, inti){
Uri uri = Uri.parse("http://www.itcast.cn/");//打开链接
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.show();//显示对话框
上面代码采用的是一个链式调用,像setTitle()、setMessage()这些方法,他们的返回值都是当前对话框对象。
创建带单选项列表的对话框
下面代码将打开一个如右上图所示的选项列表对话框:
final String[] items ={"java", ".net", "php"};
new AlertDialog.Builder(SenderNotificationActivity.this).setTitle("选择语言")
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item],
Toast.LENGTH_SHORT).show();
}
}).show();//显示对话框
下面代码将打开一个如右下图所示的带单选框的列表对话框:
final String[] items ={"java", ".net", "php"};
new AlertDialog.Builder(SenderNotificationActivity.this).setTitle("选择语言")
.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item],
Toast.LENGTH_SHORT).show();
dialog.cancel();
}
}).show();//显示对话框
setSingleChoiceItems()的第二个参数是设置默认选项,
选项索引从0开始,-1代表不选择任何选项。
创建带多选项列表的对话框
下面代码将打开一个如右下图所示的多选项列表对话框:
final String[] items ={"java", ".net", "php"};
new AlertDialog.Builder(SenderNotificationActivity.this).setCancelable(false)
.setTitle("选择语言")
.setMultiChoiceItems(items, new boolean[]{false,true,false}, new DialogInterface.OnMultiChoiceClickListener() {
@Override
publicvoid onClick(DialogInterface dialog, int which, booleanisChecked) {
if(isChecked){
Toast.makeText(getApplicationContext(), items[which],
Toast.LENGTH_SHORT).show();
}
}
})
.setPositiveButton("确认",
newDialogInterface.OnClickListener(){
publicvoid onClick(DialogInterfacedialoginterface, inti){
dialoginterface.dismiss();
}
})
.show();//显示对话框
进度对话框(ProgressDialog)
ProgressDialog.STYLE_SPINNER旋体进度条风格 (为默认风格)
ProgressDialog.STYLE_HORIZONTAL横向进度条风格
public class ProgressDialogActivity extends Activity {
private ProgressDialog progressDialog;
@Override
public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
//开始一条专门处理耗时工作的线程
newThread(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(5*1000);//假设这项工作需要5秒才能完成
progressDialog.dismiss();//关闭进程对话框
//runOnUiThread(finishDialog);//要求运行在UI线程
} catch (InterruptedException e) {}
}
}).start();
progressDialog = ProgressDialog.show(ProgressDialogActivity.this, "请稍等", "数据正在加载中...", true);
}
privateRunnable finishDialog = new Runnable() {
@Override
publicvoid run() {
progressDialog.dismiss();
}
};
}