对话框是程序运行中的弹出窗口。Android系统提供了四种对话框:告警对话框(AlertDialog)、进度对话框(ProgressDialog)、日期选择对话框(DatePickerDialog)、时间选择对话框(TimerPickerDialog)。
AlertDialog
AlertDialog是一个提示窗口,要求用户做出选择。对话框中一般会有几个选择按钮、标题信息和提示信息。告警对话框可以扩展为普通告警对话框、列表对话框、单选对话框、多选对话框。
在程序中创建对话框需要如下步骤:
1、获得AlertDialog的静态内部类Builder对象。由该类来创建对话框。
2、通过Builder对象设置对话框的标题、按钮以及按钮将要响应的事件。
3、调用Builder的create()方法创建对话框(AlertDialog)。
4、调用AlertDialog的show()方法显示对话框。
package com.jwt.chp04;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class AlertDialogActivity extends Activity {
private Button btnAlert;
private Button btnList;
private Button btnSingle;
private Button btnMulti;
private TextView lblTitle;
final String[] items = { "奥尔良鸡腿堡", "麻辣鸡腿堡", "深海鳕鱼堡", "咖啡" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alertdialog);
btnAlert = (Button) findViewById(R.id.btnADDel);
btnList = (Button) findViewById(R.id.btnADSel);
btnSingle = (Button) findViewById(R.id.btnADSingleSel);
btnMulti = (Button) findViewById(R.id.btnADMultiSel);
lblTitle = (TextView) findViewById(R.id.lblADTitle);
btnAlert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowAlertDialog();
}
});
btnList.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowListDialog();
}
});
btnSingle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowSingleSelectDialog();
}
});
btnMulti.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowMultiSelectDialog();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.alert_dialog, menu);
return true;
}
private void ShowAlertDialog() {
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle("告警对话框")
.setMessage("您确定要删除这个吗?")
.setPositiveButton("Sure",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
lblTitle.setText("Delete Successed!");
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
lblTitle.setText("Delete Cancel");
}
});
AlertDialog dialog = b.create();
dialog.show();
}
private void ShowListDialog() {
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle("列表对话框").setItems(items,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
lblTitle.setText("您的选择是:" + items[which]);
}
});
AlertDialog dialog = b.create();
dialog.show();
}
private void ShowSingleSelectDialog() {
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle("单选对话框");
b.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
lblTitle.setText("您的选择是:" + items[which]);
}
});
b.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog dialog = b.create();
dialog.show();
}
private void ShowMultiSelectDialog() {
final boolean[] defSel = new boolean[] { false, true, false, true };
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle("多选对话框");
b.setMultiChoiceItems(items, defSel,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
// TODO Auto-generated method stub
defSel[which] = isChecked;
String result = "您选择了:";
for (int i = 0; i < defSel.length; i++) {
if (defSel[i])
result += items[i] + "、";
}
lblTitle.setText(result);
}
});
b.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog dialog = b.create();
dialog.show();
}
}