【Android Studio】DialogFragmentを使ってダイアログを表示する方法

この記事では DialogFragment を使ったダイアログの表示方法を紹介しています。
基本的なダイアログと、リストを表示する3つのダイアログを作成していきます。
開発環境
Android Studio | 4.1.1 |
---|---|
Android Emulator | Nexus 4 (API 30) |
minSdk | 16 |
targetSdk | 30 |
プロジェクトについて
AlertDialogSample という名前でプロジェクトを作成しています。
また MainActivity.java と activity_main.xml があることを前提に進めていきます。
テーマについて
themes.xml では Theme.AppCompat.DayNight.DarkActionBar を使用しています。
MaterialComponents テーマを使っている場合のコードも用意しています。

解説
1. myDialogFragment クラスを作成する
まずは DialogFragment クラスを extends(拡張)したクラスを用意します。
Android Studio 左側のプロジェクト構造からパッケージ名(com.example.alertdialogsample)を選択した状態で右クリックして、New → Java Class を選択します。

myDialogFragment と入力して return キーを押します。

5 行目の extends DialogFragment を追加します。
2. ダイアログを作成する
onCreateDialog メソッドを追加して、以下のようにダイアログを作成します。
MaterialComponents テーマを使っている方は 17 行目の AlertDialog.Builder を MaterialAlertDialogBuilder にしてください。
ここでは「タイトル・メッセージ・3つのボタン」を設定しました。

ボタンの種類
ダイアログのボタンは
- Positive(ポジティブ)
- Negative(ネガティブ)
- Neutral(ニュートラル)
の3種類を使うことができます。

全てのボタンを使う必要はありませんが、同じボタンを2つ使うことはできません。
ボタン | 使うメソッド | |
---|---|---|
Positive | 肯定的な意味のアクション 例)OK、同意する | setPositiveButton |
Negative | 否定的な意味のアクション 例)キャンセル、同意しない | setNegativeButton |
Neutral | Positive と Negative のどちらでもない場合 例)あとで | setNeutralButton |
3. ダイアログを表示する
ダイアログを表示するボタンに android:onClick=”showDialog” をセットします。
MainActivity.java に showDialog メソッドを用意して、ダイアログを表示します。(17~20行目)
19行目
dialogFragment.show(getSupportFragmentManager(), "my_dialog");
DialogFragment クラスの show メソッドでダイアログを表示します。
一つ目の引数には、フラグメントを管理しているオブジェクトを getSupportFragmentManager() で取得してセットしています。
二つ目の引数は、このダイアログフラグメントのタグです。このフラグメントを識別するために使う名前のようなものです。
4. アプリを実行
アプリを実行して、このように表示されたら基本的なダイアログは完成です。

5. リストを表示する
次にリストを表示するダイアログを作成していきます。
リストを使う場合は setMessage メソッドは削除して下さい。
① 基本のリスト
基本のリストでは、項目を1つだけ選択することができます。
setItems メソッドを使って、選択肢を表示します。
choices 配列がリストに表示されて、項目を選択すると Toast で表示されます。

② ラジオボタン
ラジオボタンは項目を1つだけ選択することができます。
setSingleChoiceItems メソッドを使います。
項目を選択すると Toast で表示されます。

③ チェックボックス
チェックボックスは複数の項目を選択することができます。
setMultiChoiceItems メソッドを使います。
19 行目 boolean[] choicesChecked = {false, true, false}; では、初期状態でチェックされているかを指定します。
true がチェックされている、false がチェックされていない状態です。
項目を選択したら choicesChecked[which] = isChecked; でチェック状態を更新します。

ダイアログのカスタマイズ方法
- DialogFragment に値を渡す方法
- ダイアログを閉じないようにする方法
- ダイアログに HTML リンクを表示する方法
- ダイアログに画像を表示する方法
- ダイアログの文字色・文字サイズ・背景色のカスタマイズ方法