タイトル通りの内容です。
今回はダイアログ(AlertDialog)の使い方を紹介します。
ダイアログは一般的なアプリで使用している場面はよく見られると思いますね。
とても便利な機能なので、しっかりと覚えておきたいです(^ω^)
ボタンも何もない普通のアラートダイアログ
まずは普通のダイアログを作ってみます。
AlertDialog.Builderクラスのインスタンスを作成して、
setTitleメソッドでタイトル、
setMessageメソッド表示する文字列を設定、
最後にshowメソッドで表示をします。
ボタンを押したらダイアログを表示するサンプルです。
・Sample20120806Activity.java
※import文は省略
ublic class Sample20120806Activity extends Activity { TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); ll.setOrientation( LinearLayout.VERTICAL ); setContentView(ll); tv = new TextView(this); tv.setText("ボタンを押して下さい。"); ll.addView(tv); Button btn = new Button(this); btn.setText("ダイアログ表示"); btn.setOnClickListener( new SampleClick() ); ll.addView(btn); } class SampleClick implements OnClickListener{ @Override public void onClick(View v) { AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this ); dl.setTitle("タイトル"); dl.setMessage("テキスト"); dl.show(); } } }
【実行結果】
ボタン付きアラートダイアログ
上記のサンプルではアラートを表示された後は本体の「戻る」ボタンを押さないとアラート消せません。
ちょっと不便ですね。ボタンを表示して押した時にダイアログを閉じるようにしてみます。
ボタンの種類は
- PositiveButton
- NegativeButton
- NeutralButton
大きな違いは無いみたいです、ただ最大3つまでってことなんでしょうか、
気分で使い分けましょう(´ω`)
・Sample20120806Activity.java
※SampleClickの中だけ変更
class SampleClick implements OnClickListener{ @Override public void onClick(View v) { AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this ); dl.setTitle("タイトル"); dl.setMessage("テキスト"); dl.setPositiveButton("ボタン", null); //ボタン dl.show(); }
【実行結果】
2つボタンを表示、ボタンにイベントリスナを登録する
ボタンをセットするメソッドの第二引数にイベントリスナーを登録できます。
ボタンを2つ表示して、選択したボタンにより別の処理をさせるということができますね。
今度のサンプルではPositiveButtonとNegativeButtonの2つを表示して、
ダイアログボタン用のDialogInterface.OnClickListenerインターフェースを実装したリスナを登録します。
PositiveButtonボタンの場合は-1が、
NegativeButtonボタンの場合は-2の値が入るのでswitch文で処理を分岐させています。
・Sample20120806Activity.java
※SampleClickの中だけ変更
@Override public void onClick(View v) { AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this ); dl.setTitle("選択して下さい。"); dl.setMessage("好きなお菓子は?"); dl.setPositiveButton("きのこの山", new SampleDialogClick() ); dl.setNegativeButton("たけのこの里", new SampleDialogClick() ); dl.show(); } class SampleDialogClick implements DialogInterface.OnClickListener{ @Override public void onClick(DialogInterface dialog, int which) { switch( which ){ case -1: tv.setText("きのこの山が選ばれました"); break; case -2: tv.setText("たけのこの里が選ばれました" ); break; } } }
【実行結果】
たけのこの里のほうが美味しいですよね。
ラジオボタン付きのアラートダイアログ
setSingleChoiceItemsメソッドを使うと、
アラートダイアログにラジオボタンとリストを表示させることができます。
setSingleChoiceItems( 【リスト表示用の配列】, 【デフォルトの選択項目】, 【イベントリスナ】);
第一引数にリスト表示する文字列の配列を、
第二引数にデフォルトの選択項目を、
第三引数にイベントリスナを指定します。
・Sample20120806Activity.java
※SampleClickの中だけ変更
class SampleClick implements OnClickListener{ String str; @Override public void onClick(View v) { String[] items = {"きのこの山", "たけのこの里"}; AlertDialog.Builder dl = new AlertDialog.Builder( Sample20120806Activity.this ); dl.setTitle("選択して下さい。"); dl.setSingleChoiceItems(items, 1, new SampleDialogClick() ); dl.setPositiveButton("OK", new SampleDialogClick() ); dl.show(); } class SampleDialogClick implements DialogInterface.OnClickListener{ @Override public void onClick(DialogInterface dialog, int which) { switch( which ){ case -1: tv.setText( str + "が選ばれました。" ); break; case 0: str = "きのこの山"; break; case 1: str = "たけのこの里"; break; } } } }
【実行結果】
たけのこの方が美味しいですよ。