Na linguagem Java usa-se a classe JOptionPane para criar as caixas de diálogo. No Android usa-se a classe AlertDialog para o mesmo propósito. As caixas de diálogo são usadas geralmente para obter uma informação simples do usuário, "sim" ou "não" referente à uma pergunta.

Material para mais detalhes:

Exemplos práticos (AlertDialog Basic)

  • activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:id="@+id/textViewHello"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
  • MyDialogFragment.java

    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.widget.Toast;
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AlertDialog;
    import androidx.fragment.app.DialogFragment;
    public class MyDialogFragment extends DialogFragment {
    // O uso do fragmento ajuda a evitar problemas com as caixas de diálogos, como a perda do estado do diálogo durante rotações de tela.
        @NonNull
        @Override
        public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage("Como está o clima hoje?")
                    .setTitle("Responda a pergunta")
                    .setIcon(R.mipmap.ic_launcher)
                    .setPositiveButton("Quente", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(getActivity().getApplicationContext(),
                                    "Beba muita água", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .setNegativeButton("Frio", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(getActivity().getApplicationContext(),
                                    "Coloque um casaco", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .setNeutralButton("Ameno", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(getActivity().getApplicationContext(),
                                    "Aproveite o dia!!", Toast.LENGTH_SHORT).show();
                        }
                    });
            AlertDialog dialog = builder.create();
    //onDismiss não pertence ao ciclo de vida do DialogFragment, mas pode ser usado quando o diálogo for fechado pelo usuário.
            dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    Toast.makeText(getActivity().getApplicationContext(), "Encerrando o diálogo", Toast.LENGTH_SHORT).show();
                }
            });
            return dialog;
        }//onCreateDialog
    }//class
  • MainActivity.java

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    public class MainActivity extends AppCompatActivity {
        private TextView textViewHello;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textViewHello = findViewById(R.id.textViewHello);
            textViewHello.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    openAlertDialog();
                }
            });
        }
        private void openAlertDialog() {
            MyDialogFragment mdf = new MyDialogFragment();
            mdf.show(getSupportFragmentManager(),"clima");
        }//private
    }//class

Exemplos práticos (AlertDialog Personalizado)

  • colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="black">#FF000000</color>
        <color name="white">#FFFFFFFF</color>
        <color name="red">#D02C2C</color>
        <color name="green">#4CAF50</color>
    </resources>
  • activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Clicar"
            android:id="@+id/btnClicar"
            android:textAppearance="@style/TextAppearance.AppCompat.Large"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
  • MyDialogFragment.java

    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AlertDialog;
    import androidx.fragment.app.DialogFragment;
    public class MyDialogFragment extends DialogFragment {
        @NonNull
        @Override
        public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
            //return super.onCreateDialog(savedInstanceState);
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            LayoutInflater inflater = getLayoutInflater();
            View view = inflater.inflate(R.layout.dialog,null);
            EditText editTextNome = view.findViewById(R.id.editTextNome);
            builder.setView(view)
                    .setTitle("Personalizado")
                    .setPositiveButton("Sim", new DialogInterface.OnClickListener(){
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            String nome = editTextNome.getText().toString();
                            Toast.makeText(getActivity().getApplicationContext(),
                                    "Você clicou em sim "+nome, Toast.LENGTH_SHORT).show();
                        }
                    })
                    .setNeutralButton("Não", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            String nome = editTextNome.getText().toString();
                            Toast.makeText(getActivity().getApplicationContext(),
                                    "Você clicou em não "+nome, Toast.LENGTH_SHORT).show();
                        }
                    });
            return builder.create();
        }
    }//class
  • MainActivity.java

    import androidx.appcompat.app.AlertDialog;
    import androidx.appcompat.app.AppCompatActivity;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    public class MainActivity extends AppCompatActivity {
        private Button buttonClicar;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            buttonClicar = findViewById(R.id.btnClicar);
            buttonClicar.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    openAlertDialog();
                }
            });
        }
        private void openAlertDialog() {
            MyDialogFragment mdf = new MyDialogFragment();
            mdf.show(getSupportFragmentManager(),"personalizado");
        }
    }
  • dialog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:background="@color/red"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="@style/TextAppearance.AppCompat.Large"
            android:text="AlertaDialog Personalizado"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/editTextNome"
            android:hint="Digite seu nome"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="teste"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium"
                android:background="@color/green"/>
        </LinearLayout>
    </LinearLayout>

Exemplos práticos (AlertDialog List)

  • activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:id="@+id/textViewHello"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
  • string.xml

    <resources>
        <string name="app_name">AlertDialogList</string>
        <array name="array_semana">
            <item>Segunda-feira</item>
            <item>Terça-feira</item>
            <item>Quarta-feira</item>
            <item>Quinta-feira</item>
            <item>sexta-feira</item>
        </array>
    </resources>
  • MyDialogFragment.java

    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.content.res.Resources;
    import android.os.Bundle;
    import android.widget.Toast;
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AlertDialog;
    import androidx.fragment.app.DialogFragment;
    public class MyDialogFragment extends DialogFragment {
        @NonNull
        @Override
        public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
            //return super.onCreateDialog(savedInstanceState);
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("Escolha o dia da semana")
                    .setIcon(R.mipmap.ic_launcher)
                    .setItems(R.array.array_semana, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(getActivity().getApplicationContext(),
                                    "Você clicou em: "+i, Toast.LENGTH_SHORT).show();
                            Toast.makeText(getActivity().getApplicationContext(),
                                    recuperarItem(i), Toast.LENGTH_SHORT).show();
                        }
                    });
            return builder.create();
        }//method
        private String recuperarItem(int i){
            Resources resources = getResources();
            String[] dias_semana = resources.getStringArray(R.array.array_semana);
            return dias_semana[i];
        }
    }//class
  • MainActivity.java

    import androidx.appcompat.app.AppCompatActivity;
    import android.content.res.Resources;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    public class MainActivity extends AppCompatActivity {
        private TextView textViewHello;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textViewHello = findViewById(R.id.textViewHello);
            textViewHello.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    openAlertDialogList();
                }
            });
        }//onCreate
        private void openAlertDialogList() {
            MyDialogFragment mdf = new MyDialogFragment();
            mdf.show(getSupportFragmentManager(),"lista_semana");
        }
    }//class

Exemplos práticos (AlertDialog with multiple choice)

  • activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       tools:context=".MainActivity">
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Hello World!"
           android:id="@+id/textViewHello"
           app:layout_constraintBottom_toBottomOf="parent"
           app:layout_constraintLeft_toLeftOf="parent"
           app:layout_constraintRight_toRightOf="parent"
           app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
  • string.xml

    <resources>
       <string name="app_name">AlertDialogFragmentTest</string>
       <array name="array_semana">
           <item>Segunda-feira</item>
           <item>Terça-feira</item>
           <item>Quarta-feira</item>
           <item>Quinta-feira</item>
           <item>Sexta-feira</item>
       </array>
    </resources>
  • MyDialogFragment.java

    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.content.res.Resources;
    import android.os.Bundle;
    import android.widget.Toast;
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AlertDialog;
    import androidx.fragment.app.DialogFragment;
    public class MyDialogFragment extends DialogFragment {
       @NonNull
       @Override
       public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
          // return super.onCreateDialog(savedInstanceState);
          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
          builder.setTitle("Escolha o dia da semana: ")
                  .setIcon(R.mipmap.ic_launcher)
                  .setMultiChoiceItems(R.array.array_semana, null,       //adiciona uma lista de múltipla escolha
                          new DialogInterface.OnMultiChoiceClickListener() {
                      @Override
                      public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                          if (b) {     //verificar qual item da lista foi selecionado
                            Toast.makeText(getActivity().getApplicationContext(),
                                    recuperarItem(i), Toast.LENGTH_SHORT).show();   //mostra qual elemento foi selecionado
                          }
                      }//onClick
                  });
          return builder.create();
       }//onCreateDialog
       private String recuperarItem(int i){
           Resources res = getResources();
           String[] dias_semana = res.getStringArray(R.array.array_semana);
           return dias_semana[i];
       }//
    }//class
  • MainActivity.java

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    public class MainActivity extends AppCompatActivity {
       private TextView textViewHello;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           textViewHello = findViewById(R.id.textViewHello);
           textViewHello.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   openAlertDialog();
               }
           });
       }//onCreate
       private void openAlertDialog(){
           MyDialogFragment mdf = new MyDialogFragment();   //criação do objeto da classe MyDialogFragment
           mdf.show(getSupportFragmentManager(),"semana");    //chame o método show passando um gerenciador de fragmento e a tag necessária para salvar/restaurar os dados referente do fragmento
       }//open
    }//class

Para ter uma lista com única escolha basta trocar o método setMultiChoiceItems pelo método setSingleChoiceItems.

Veja o exemplo:

 .setSingleChoiceItems(R.array.array_semana, 0, new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialogInterface, int i) {
                       Toast.makeText(getActivity().getApplicationContext(),
                               recuperarItem(i), Toast.LENGTH_SHORT).show();
                   }
               });