android alertdialog

Diálogo de alerta de Android con uno, dos y tres botones



alertdialog (1)

No hago alertas muy a menudo, pero cada vez que lo hago me lleva un tiempo leer la documentation y descubrir cómo hacerlo. Como he tenido que hacer esto varias veces, voy a escribir una respuesta a continuación a la que puedo volver en el futuro. Específicamente quiero comparar el código básico para

  • Un botón (OK)
  • Dos botones (OK y Cancelar)
  • Tres botones (Positivo, Negativo, Otro)

Sería bueno tener el código básico para estos tres tipos de alertas comunes en un solo lugar para una fácil referencia y modificación en el futuro. Esta pregunta pregunta cómo hacerlo con un botón.

Estoy agregando mi respuesta a continuación.


Un botón

import android.support.v7.app.AlertDialog; public class MainActivity extends AppCompatActivity { public void showAlertDialogButtonClicked(View view) { // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("My title"); builder.setMessage("This is my message."); // add a button builder.setPositiveButton("OK", null); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); } }

Dos botones

public class MainActivity extends AppCompatActivity { public void showAlertDialogButtonClicked(View view) { // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("AlertDialog"); builder.setMessage("Would you like to continue learning how to use Android alerts?"); // add the buttons builder.setPositiveButton("Continue", null); builder.setNegativeButton("Cancel", null); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); } }

Tres botones

public class MainActivity extends AppCompatActivity { public void showAlertDialogButtonClicked(View view) { // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Notice"); builder.setMessage("Launching this missile will destroy the entire universe. Is this what you intended to do?"); // add the buttons builder.setPositiveButton("Launch missile", null); builder.setNeutralButton("Remind me later", null); builder.setNegativeButton("Cancel", null); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); } }

Si el texto del botón es demasiado largo para que todos quepan horizontalmente, se colocará automáticamente en una columna vertical de tres botones.

Manejo de clics de botón

OnClickListener era null en los ejemplos anteriores. Puede reemplazar null con un oyente para hacer algo cuando el usuario toca un botón. Por ejemplo:

builder.setPositiveButton("Launch missile", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // do something like... launchMissile(); } });

Continuando

Hay muchas más variedades de diálogos que puede hacer. Consulte la documentation para obtener ayuda con esto.

Dado que solo se admiten tres botones en un AlertDialog , aquí hay un ejemplo de un diálogo con una lista.

public class MainActivity extends AppCompatActivity { public void showAlertDialogButtonClicked(View view) { // setup the alert builder AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Choose an animal"); // add a list String[] animals = {"horse", "cow", "camel", "sheep", "goat"}; builder.setItems(animals, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // horse case 1: // cow case 2: // camel case 3: // sheep case 4: // goat } } }); // create and show the alert dialog AlertDialog dialog = builder.create(); dialog.show(); } }

Consulte esta respuesta para ver ejemplos similares de una lista de botones de opción y una lista de casillas de verificación.

Notas

  • Use recursos de cadena en lugar de cadenas codificadas.
  • Puede ajustar todo en una clase que extienda DialogFragment para reutilizar fácilmente un diálogo. (Consulte this para obtener ayuda).
  • Estos ejemplos utilizan la biblioteca de soporte para admitir versiones anteriores a la API 11. Por lo tanto, la importación debería

    import android.support.v7.app.AlertDialog;

  • onCreate método onCreate en los ejemplos anteriores por brevedad. No había nada especial allí.

Ver también

  • Cómo deshabilitar el botón positivo
  • Use una tostada en lugar de una alerta para mensajes cortos
  • Lista de opción única, lista de botones de radio y lista de casillas de verificación
  • Cómo implementar una vista personalizada de AlertDialog