ユーザーに注意を喚起したり何かを選択させたりするのに、ポップアップでAlertDialogを使うと便利です。AlertDialogはDialogFragmentを継承したクラスを使って作成します。
 
![[Android] AlertDialog をDialogFragmentを使って作成 1x1.trans - [Android] AlertDialog をDialogFragmentを使って作成](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
Android Studio
2021.2.1
2021.2.1
AlertDialog
こちらで簡単なAlertDialogを作成しましたが
 
Toastは一定時間で消えてしまいますがAlertDialogはそのまま表示してくれるので、ユーザーにある程度長いメッセージを出したり、何か...
DialogFragmentを使うことでよりコントロールして作成できます
AlertDialogはFragment を使って、別クラスで作ります。
ボタンがタップされたら、DialogFragmentを継承したクラスを呼びその中でAlertDialogを作成します。onCreateDialog()を使ってユーザーの選択を受け取ります
選択された項目によって、文字をMainActivityに返すサンプルを作ってみましょう。
 
MainActivity.java
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | //package your.app.name; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; import androidx.annotation.NonNull; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity {     private TextView textView;     private DialogFragment dialogFragment;     private FragmentManager fragmentManager;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         textView = findViewById(R.id.text_view);         Button button = findViewById(R.id.button);         // ボタンタップでAlertを表示させる         button.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 fragmentManager = getSupportFragmentManager();                 // DialogFragment を継承したAlertDialogFragmentのインスタンス                 dialogFragment = new AlertDialogFragment();                 // DialogFragmentの表示                 dialogFragment.show(fragmentManager, "test alert dialog");             }         });     }     public void setTextView(String message){         textView.setText(message);     }     // DialogFragment を継承したクラス     public static class AlertDialogFragment extends DialogFragment {         // 選択肢のリスト         private String[] menulist = {"選択(1)","選択(2)","選択(3)"};         @Override         @NonNull         public Dialog onCreateDialog(Bundle savedInstanceState) {             AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());             // タイトル             alert.setTitle("Test AlertDialog");             alert.setItems(menulist, new DialogInterface.OnClickListener() {                 @Override                 public void onClick(DialogInterface dialog, int idx) {                     // 選択1                     if (idx == 0) {                         setMassage(menulist[0]);                     }                     // 選択2                     else if (idx == 1) {                         setMassage(menulist[1]);                     }                     // 選択3, idx == 2                     else{                         setMassage(menulist[2]);                     }                 }             });             return alert.create();         }         private void setMassage(String message) {             MainActivity mainActivity = (MainActivity) getActivity();             if(mainActivity!= null) {                 mainActivity.setTextView(message);             }         }     } } | 
 
レイアウト
activity_main.xml
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     android:gravity="center"     android:background="#cfd"     tools:context=".MainActivity">     <TextView         android:id="@+id/text_view"         android:text="@string/text"         android:textSize="40sp"         android:layout_width="wrap_content"         android:layout_height="wrap_content" />     <Button         android:id="@+id/button"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_margin="20dp"         android:text="@string/button"         android:textSize="20sp" /> </LinearLayout> | 
 
strings.xml
| 1 2 3 4 5 | <resources>     <string name="app_name">YourAppName</string>     <string name="text">Test AlertDialog</string>     <string name="button">Button</string> </resources> | 
これで出来上がりです
尚、複数のアラートは、別の作業が必要になります
 
 
関連ページ:
簡単なAlertDialog 
AlertDialog:FragmentDialogを使って設定
AlertDialogに画像を設定
 
References:
ダイアログ | Android Developers
AlertDialog | Android Developers
![[Android] AlertDialog をDialogFragmentを使って作成 as2021 alert 00a 100x100 - [Android] AlertDialog をDialogFragmentを使って作成](https://akira-watson.com/wp-content/uploads/2022/06/as2021_alert_00a-100x100.png)
