実際にダイアログボックスを作る
AlertDialogが基本になるわけですが、具体的にダイアログボックスを作るにはどうすればいいでしょうか。AlertDialogクラスには、タイトルなどを設定するメソッドがありますが、通常はAlertDialog.Builderを使います。
AlertDialog.Builderのメソッドは、機能が追加されており、AlertDialogよりは、ダイアログボックスが作りやすくなっています。なお、現状では、AlertDialog自体が持つメソッドの中には利用を推奨されないものもあるので、できればBuilderを使うようにします。時間があるなら、SDKのリファレンスでAlertDialog(android-sdk-windows以下の、\docs\reference\android\app\AlertDialog.html)とAlertDialog.Builder(同じくandroid-sdk-windows以下の、\docs\reference\android\app\AlertDialog.Builder.html)を比べてみるといいでしょう。
また、Builderのメソッドは、Bulider自分自身を返すため、メソッドを続けて記述できます(続けずにバラして書いてもOK)。たとえばボタンが2つあり、メッセージを表示するようなダイアログボックス(俗に言うメッセージボックス)は、以下のようなコードで記述できます(行末を表すセミコロンの位置に注意)。
AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_two_buttons_title)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//code for OK
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//code for Cancel
}
})
.create();
Builderのメソッドでは文字列やアイコンなどのリソースは、リソースidを指定するだけでいいため、記述が簡略化されます。また、ボタンの有無は、このコードにあるようにハンドラを設定した「.setXXXButton」メソッドで指定できます。ハンドラの中身は空でもかまいません。表示するメッセージはどうでもかまいませんが、Builderでは「Positive」「Negative」「Neutral」の最大3つのボタンが利用できます。これ以上ボタンを置きたい場合には、ダイアログの表示を定義するViewを作ってsetViewメソッドを使います。
最後の「create()」でAlertDialogオブジェクトが作られます。Activityの「onCreateDialog」の戻り値は、Dialogオブジェクトになっているので、通常は、このAlertDialogオブジェクトを戻します。
なお、ダイアログが1つだけの場合、Builderを使ってダイアログを組み立て、最後にshowメソッドを実行させて直接ダイアログを表示させることも可能です。
この連載の記事
-
第11回
スマホ
アプリケーションをAndroidマーケットに登録する -
第10回
スマホ
ブロードキャストへの応答とタイマ割り込み -
第9回
スマホ
Androidアプリで複数の項目を表示するリストビューを使う -
第7回
スマホ
Androidアプリの設定画面を作成する -
第6回
スマホ
Androidアプリ内で表示されるメニューを作成する -
第5回
スマホ
インテントによるアプリケーションとアクティビティの呼出し -
第4回
スマホ
Androidアプリを構成する「アクティビティ」を実際に作る -
第3回
スマホ
アプリケーションの基本となる「アクティビティ」 -
第2回
スマホ
開発したアプリをエミュレーターやデバッガ上でテストする -
第1回
スマホ
Androidアプリの開発環境であるEclipseの使い方を知る - この連載の一覧へ