ダイアログを表示する / Getting Started
AlertDialogは、ユーザーに警告を出したり、確認を促したりすることができるダイアログです。
今回は、AlertDialogの基本的な使い方を解説します。
基本的なAlertDialogでは、主に以下の要素を利用することが可能です。
- アイコン(無くても良い)
- タイトル
- メッセージ
- ボタン (個数は3つまで表示が可能)
それでは以上を踏まえて、サンプルを例にAlertDialogの使い方を見ていきましょう。
AlertDialog構築の流れ
AlertDialogの生成の流れは以下の図の通りです。
図2 : AlertDialogの生成手順
以下で各項目について詳しく解説していきます。
AlertDialogの生成と構築
(1)まずはAlertDialogの元となるビルダーの生成を行います。
AlertDialogではまずサブクラスのBuilderを取得し、Builderクラスの public メソッドを使用してアラートダイアログのすべてのプロパティを定義する必要があります。
AlertDialogのビルダーのインスタンス生成は以下のように行います。
AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
(2)ビルダーを生成したら、以下の表に示すメソッドを利用して、冒頭で述べた各種要素を設定します。
表1 : AlertDialogで要素を設定するメソッド一覧
| メソッド | 概要 |
|---|---|
| setIcon() | アイコンをセットする |
| setTitle() | タイトルをセットする |
| setMessage() | メッセージをセットする |
| setPositiveButton() | ボタン(一つ目)をセットする |
| setNeutralButton() | ボタン(二つ目)をセットする |
| setNegativeButton() | ボタン(三つ目)をセットする |
それでは、表1にまとめたメソッドを利用したソースコードを見てみます。
以下は実際のサンプルソースコードと、サンプル実行後のダイアログ画面です。
タイトル、メッセージ、アイコンをそれぞれセットした後、ボタンを3つ(OK, SKIP, NG)生成しています。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
// ダイアログの設定
alertDialog.setIcon(R.drawable.icon); //アイコン設定
alertDialog.setTitle("title"); //タイトル設定
alertDialog.setMessage("massage"); //内容(メッセージ)設定
// OK(肯定的な)ボタンの設定
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// OKボタン押下時の処理
Log.d("AlertDialog", "Positive which :" + which);
}
});
// SKIP(中立的な)ボタンの設定
alertDialog.setNeutralButton("SKIP", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// SKIPボタン押下時の処理
Log.d("AlertDialog", "Neutral which :" + which);
}
});
// NG(否定的な)ボタンの設定
alertDialog.setNegativeButton("NG", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// NGボタン押下時の処理
Log.d("AlertDialog", "Negative which :" + which);
}
});
// ダイアログの作成と描画
// alertDialog.create();
alertDialog.show();
}

図3 : サンプル実行画面
ボタン生成時の各種メソッド(setPositiveButton、setNeutralButton、setNegativeButton)の引数は、それぞれ以下のようになっています。
表2 : ボタン生成時のメソッドの引数
| 引数 | 概要 |
|---|---|
| 第1引数(String) | ボタン上に表示する文言を文字列型で指定 |
| 第2引数(DialogInterface.OnClickListener) | ボタン押下時のイベントを取得するためのリスナーを登録 |
なお、どのメソッドをセットするかによって、ボタンの位置も決まります※。SKIP(中立)ボタンはOKより右に、NG(否定的)ボタンはOK、SKIPより右に表示されます(一つしか使用しない場合は中央に大きく一つだけ表示されます。)。
ボタンの個数は0〜3個の間で任意ですので、必要に応じて使用しましょう。
(3)(4)BuilderによってAlertDialogの中身を構築したら、最後に忘れてはいけないのが、AlertDialogの生成と描画です。
表3 : ダイアログの生成と描画を行うメソッド
| メソッド | 概要 |
|---|---|
| create() | ダイアログの生成のみ行う |
| show() | ダイアログの生成と表示を同時に行う |
show()メソッドのみでAlertDialogの生成も描画も両方行えます。
あとは、ボタンが押された場合や画面遷移時など、任意のイベント発生時に表示するようにしてあげればOKです。
onCreate()でalertDialog.create()まで行っておき、任意のタイミングでshow()メソッドを呼ぶことで描画する、などの使い方も可能です。
以上が基本的なAlertDialogの使い方になります。
※言語圏によってPositive、Neutral、Negativeの解釈が違ってくる場合があり、ボタンの位置に影響を与える可能性があります。
また、今回はPositiveにOK、NegativeにはNGの意味をそれぞれ持たせましたが、逆にしても問題はありません。ただし、定常的にPositiveにはOK、NegativeにはNGやキャンセルなどの意味を持たせておく場合が多いです(ただし、ボタンを3つ使用する場合は、NeutralにNGの意味を持たせ、Negativeには中断などの意味を持たせる場合もあります)。すべてのアプリケーション間でUIに統一感を持たせ、ユーザーの誤操作を防ぐためにも、どのボタンをどの位置に配置するかを意識することは重要です。

