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étodoonCreate
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