【Android】ダイアログ(AlertDialog)を表示する方法

Bookmark this on Livedoor Clip
LINEで送る

タイトル通りの内容です。

今回はダイアログ(AlertDialog)の使い方を紹介します。
ダイアログは一般的なアプリで使用している場面はよく見られると思いますね。

とても便利な機能なので、しっかりと覚えておきたいです(^ω^)



ボタンも何もない普通のアラートダイアログ


まずは普通のダイアログを作ってみます。
AlertDialog.Builderクラスのインスタンスを作成して、
setTitleメソッドでタイトル、
setMessageメソッド表示する文字列を設定、
最後にshowメソッドで表示をします。


ボタンを押したらダイアログを表示するサンプルです。
・Sample20120806Activity.java
※import文は省略
01ublic class Sample20120806Activity extends Activity {
02 
03  TextView tv;
04 
05  @Override
06  public void onCreate(Bundle savedInstanceState) {
07      super.onCreate(savedInstanceState);
08      LinearLayout ll = new LinearLayout(this);
09      ll.setOrientation( LinearLayout.VERTICAL );
10      setContentView(ll);
11 
12      tv = new TextView(this);
13      tv.setText("ボタンを押して下さい。");
14      ll.addView(tv);
15 
16      Button btn = new Button(this);
17      btn.setText("ダイアログ表示");
18      btn.setOnClickListener( new SampleClick() );
19      ll.addView(btn);
20 
21  }
22 
23  class SampleClick implements OnClickListener{
24 
25    @Override
26    public void onClick(View v) {
27      AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this );
28      dl.setTitle("タイトル");
29      dl.setMessage("テキスト");
30      dl.show();
31    }
32 
33  }
34}



【実行結果】
【Android】ダイアログ(AlertDialog)を表示する方法01 【Android】ダイアログ(AlertDialog)を表示する方法02

ボタン付きアラートダイアログ


上記のサンプルではアラートを表示された後は本体の「戻る」ボタンを押さないとアラート消せません。
ちょっと不便ですね。ボタンを表示して押した時にダイアログを閉じるようにしてみます。

ボタンの種類は
  • PositiveButton
  • NegativeButton
  • NeutralButton
と三種類用意されています。
大きな違いは無いみたいです、ただ最大3つまでってことなんでしょうか、
気分で使い分けましょう(´ω`)

・Sample20120806Activity.java
※SampleClickの中だけ変更
01class SampleClick implements OnClickListener{
02 
03  @Override
04  public void onClick(View v) {
05    AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this );
06    dl.setTitle("タイトル");
07    dl.setMessage("テキスト");
08    dl.setPositiveButton("ボタン", null); //ボタン
09    dl.show();
10  }



【実行結果】
【Android】ダイアログ(AlertDialog)を表示する方法03

2つボタンを表示、ボタンにイベントリスナを登録する


ボタンをセットするメソッドの第二引数にイベントリスナーを登録できます。
ボタンを2つ表示して、選択したボタンにより別の処理をさせるということができますね。

今度のサンプルではPositiveButtonとNegativeButtonの2つを表示して、
ダイアログボタン用のDialogInterface.OnClickListenerインターフェースを実装したリスナを登録します。

PositiveButtonボタンの場合は-1が、
NegativeButtonボタンの場合は-2の値が入るのでswitch文で処理を分岐させています。

・Sample20120806Activity.java
※SampleClickの中だけ変更
01@Override
02public void onClick(View v) {
03    AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this );
04    dl.setTitle("選択して下さい。");
05    dl.setMessage("好きなお菓子は?");
06    dl.setPositiveButton("きのこの山", new SampleDialogClick()   );
07    dl.setNegativeButton("たけのこの里", new SampleDialogClick() );
08    dl.show();
09}
10 
11class SampleDialogClick implements DialogInterface.OnClickListener{
12 
13    @Override
14    public void onClick(DialogInterface dialog, int which) {
15        switch( which ){
16        case -1:
17            tv.setText("きのこの山が選ばれました");
18            break;
19        case -2:
20            tv.setText("たけのこの里が選ばれました"  );
21            break;
22        }
23    }
24}


【実行結果】
【Android】ダイアログ(AlertDialog)を表示する方法04 【Android】ダイアログ(AlertDialog)を表示する方法05

たけのこの里のほうが美味しいですよね。

ラジオボタン付きのアラートダイアログ


setSingleChoiceItemsメソッドを使うと、
アラートダイアログにラジオボタンとリストを表示させることができます。

setSingleChoiceItems( 【リスト表示用の配列】, 【デフォルトの選択項目】, 【イベントリスナ】);
第一引数にリスト表示する文字列の配列を、
第二引数にデフォルトの選択項目を、
第三引数にイベントリスナを指定します。

・Sample20120806Activity.java
※SampleClickの中だけ変更
01class SampleClick implements OnClickListener{
02 
03    String str;
04 
05    @Override
06    public void onClick(View v) {
07 
08        String[] items = {"きのこの山", "たけのこの里"};
09 
10        AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this );
11        dl.setTitle("選択して下さい。");
12        dl.setSingleChoiceItems(items, 1, new SampleDialogClick() );
13        dl.setPositiveButton("OK", new SampleDialogClick()   );
14        dl.show();
15    }
16 
17    class SampleDialogClick implements DialogInterface.OnClickListener{
18 
19        @Override
20        public void onClick(DialogInterface dialog, int which) {
21            switch( which ){
22            case -1:
23                tv.setText( str + "が選ばれました。" );
24                break;
25            case 0:
26                str = "きのこの山";
27                break;
28            case 1:
29                str = "たけのこの里";
30                break;
31            }
32        }
33    }
34 
35}



【実行結果】
【Android】ダイアログ(AlertDialog)を表示する方法06 【Android】ダイアログ(AlertDialog)を表示する方法05

たけのこの方が美味しいですよ。

Bookmark this on Livedoor Clip
LINEで送る

関連記事

コメントは受け付けていません。