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

Sara

この記事では DialogFragment を使ったダイアログの表示方法を紹介しています。

基本的なダイアログと、リストを表示する3つのダイアログを作成していきます。

開発環境

Android Studio4.1.1
Android EmulatorNexus 4 (API 30)
minSdk16
targetSdk30

プロジェクトについて

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
NeutralPositive と 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; でチェック状態を更新します。

ダイアログのカスタマイズ方法

guest
0 Comments
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
0
この記事にコメントするx
記事URLをコピーしました