Android開発 虎の巻

ダイアログ

■単純なメッセージの表示

	// ダイアログの表示
	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開発 虎の巻