スマホアプリをはじめとするアプリケーションでは、ユーザーに入力や選択を求めたり、何らかのメッセージを通知する時があります。Android アプリでは、ダイアログを表示する場合は、DialogFragment クラスを継承したクラスを作成し実装していきます。
この記事では、Android + Java で、ダイアログ画面を実装する方法を解説します。
プロジェクトの作成
Android アプリ開発では、Android Studio が必要です。まだインストールしていない場合は、次の記事でインストール方法を解説していますので、こちらをご覧ください。
【関連記事】
▶Javaで簡単なAndroidゲームアプリを開発(環境準備)
Android Studio を起動したら、新規プロジェクトの作成から「空のアクティビティ」を選択します。アプリ名(名前)、パッケージ名、保存先には任意の値を設定します。言語には Java を選択します。
ダイアログを表示するクラスを作成
DialogFragment を継承したクラスを作成します。
Java ソースのパッケージ名(今回の例ではcom.example.dialogsample)の上で右クリックを行い、[新規] → [Javaクラス] の順に選択します。
ダイアログのクラス名を入力して、Enter キーを押します。今回はクラス名を MyDialog と入力します。
作成した MyDialog.java を開き、次のように DialogFragment を継承します。
package com.example.dialogsample;
import androidx.fragment.app.DialogFragment;
public class MyDIalog extends DialogFragment {
}
ダイアログの作成と表示
メッセージとOKボタンだけの簡単なダイアログを作成します。
MyDialog.java に、onCreateDialog メソッドを作成します。そして、AlertDialog.Builder クラスを使用してダイアログの定義を行います。
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("タイトル")
.setMessage("ここにメッセージの本文を入れる")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// ボタンを押した時の処理
}
});
return builder.create();
}
これでダイアログの実装は完了です。
次は、上で作成したダイアログを表示する処理を作ります。今回は、ボタンがクリックされたタイミングで、ダイアログを表示する処理を書いていきます。
プロジェクトツリーから activity_main.xml 選択します。
次のようにパレットから Button を配置します。
MainActivity.java 開いて、onCreate メソッドで、ボタンがクリックされた時に、上で作成した MyDIalog を表示する処理を書きます。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDIalog dialog = new MyDIalog();
dialog.show(getSupportFragmentManager(), "my_dialog");
}
});
}
}
ここまでの準備ができたら、アプリを実行して動きを確かめてみましょう。
次のイメージのように「show」ボタンをクリックしたタイミングでダイアログが表示されれば成功です。
ダイアログにボタンを複数表示する
AlertDialog.Builder では最大3つまで、ダイアログにボタンを置くメソッドが用意されており、それぞれのメソッドで配置するボタンには役割が決められています。
1つ目は、上のサンプルコードにもあった setPositiveButton メソッドです。このボタンはメッセージに対する承諾を意味します。つまり YES/NO を問うメッセージであれば YES のボタンを指定します。
2つ目は、setNegativeButton メソッドです。このボタンはメッセージに対する否認を表し、YES/NO を問うメッセージであれば NO のボタンを指定します。
最後の 3つ目は、setNeutralButton メソッドです。このボタンは中立的な役割のボタンで、例えば「キャンセル」や「あとで」など、その時点でメッセージに対する回答を保留するようなボタンを表します。
実際に上の 3つのメソッドを使って、ボタンを 3つ表示するダイアログのサンプルコードを見てみましょう。
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("タイトル")
.setMessage("ここにメッセージの本文を入れる")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// ボタンを押した時の処理
}
})
.setNegativeButton("No", null)
.setNeutralButton("Cancel", null);
return builder.create();
}
これを実行すると、次のような表示になります。
まとめ
今回は、Androidアプリ開発でダイアログを表示する方法を解説しました。
ダイアログの表示は、アプリのジャンルと問わず、多くのシーンで必要とされるため、是非使い方を覚えておきましょう。
- Androidアプリでは、ダイアログはDialogFragmentを継承したクラスで作る
- ダイアログはAlertDialog.Builderを使って定義する
- ダイアログには、3つの役割を持つボタンが配置できる