ダイアログ
■単純なメッセージの表示
// ダイアログの表示 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();