ダイアログ
■単純なメッセージの表示
// ダイアログの表示
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("TEST");
dlg.setMessage("Hello, World!");
dlg.show();
■OKボタンの追加
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("TEST");
dlg.setMessage("Hello, World!");
dlg.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dlg.show();
■そのほかのボタンの追加OKボタンの追加
dlg.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dlg.setNeutralButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
}
});
■リストダイアログ
setItemsを使う。
final String[] items = {"熊本","福岡","長崎"};
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("選択");
dlg.setItems(items, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
tview.setText("選択:" + items[which]);
}
});
dlg.show();
■ラジオダイアログ
setSingleChoiceItemsを使う (選択肢のString[]と、初期値、イベント)
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("一つを選択");
dlg.setSingleChoiceItems(items, 0,
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
tview.setText(items[which]);
}
});
dlg.setPositiveButton("OK",null);
dlg.show();
■チェックボックス
setMultiChoiceItems にアイテムラベルの一覧 String[] と、チェックしたかどうかを表す boolen[] の2つを引数に指定する。
boolean[] flags = {true,false,true};
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("選択");
dlg.setMultiChoiceItems(items, flags,
new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialog, int which, boolean isChecked){
flags[which] = isChecked;
}
});
dlg.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String text = "";
for(int i=0;i<items.length;++i){
if (flags[i])
text += items[i];
}
tview.settext(text);
}
});
dlg.show();
■カスタムダイアログ
setViewを使う
edtInput = new EditText(this);
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setTitle("入力?");
dlg.setView(edtInput);
dlg.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* OKボタンをクリックした時の処理 */
tview.setText(edtInput.getText());
}
});
dlg.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* Cancel ボタンをクリックした時の処理 */
}
});
dlg.show();
■日付選択ダイアログ
// 現在の日付を取得
final Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 日付選択ダイアログの生成
DatePickerDialog datePicker = new DatePickerDialog(
this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view,int year, int month, int day){
// 設定ボタンクリック時の処理
}
},
year, month, day);
// 表示
datePicker.show();
■時間選択ダイアログ
// 現在時刻を取得
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
// 時間選択ダイアログの生成
TimePickerDialog timepick= new TimePickerDialog(
this,
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view,int hour, int minute) {
//設定 ボタンクリック時の処理
}
},
hour,
minute,
true);
// 表示
timepick.show();
■プログレスダイアログ
ProgressDialog pdlg;
pdlg = new ProgressDialog(this);
pdlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pdlg.setTitle("プログレス");
pdlg.setMessage("処理中");
pdlg.setCancelable(true);
pdlg.show();
■短い書き方
new AlertDialog.Builder(this)
.setTitle("テスト")
.setMessage("Hello, World!");
.show();
Android開発 虎の巻