Quiero mostrar un cuadro de diálogo/ventana emergente con un mensaje para el usuario que muestre “¿Está seguro de que desea eliminar esta entrada?” con un botón que dice ‘Eliminar’. Cuándo Delete
se toca, debería borrar esa entrada, de lo contrario nada.
He escrito un detector de clics para esos botones, pero ¿cómo invoco un cuadro de diálogo o una ventana emergente y su funcionalidad?
Prueba este código:
AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
builder1.setMessage("Write your message here.");
builder1.setCancelable(true);
builder1.setPositiveButton(
"Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder1.setNegativeButton(
"No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
Utilizar AlertDialog.Builder :
AlertDialog alertDialog = new AlertDialog.Builder(this)
//set icon
.setIcon(android.R.drawable.ic_dialog_alert)
//set title
.setTitle("Are you sure to Exit")
//set message
.setMessage("Exiting will call finish() method")
//set positive button
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//set what would happen when positive button is clicked
finish();
}
})
//set negative button
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//set what should happen when negative button is clicked
Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
}
})
.show();
Obtendrá el siguiente resultado.

Para ver el tutorial del cuadro de diálogo de alerta, use el siguiente enlace.
Tutorial de diálogo de alerta de Android
¡Solo uno simple! Cree un método de diálogo, algo como esto en cualquier parte de su clase Java:
public void openDialog() {
final Dialog dialog = new Dialog(context); // Context, this, etc.
dialog.setContentView(R.layout.dialog_demo);
dialog.setTitle(R.string.dialog_title);
dialog.show();
}
Ahora cree el Diseño XML dialog_demo.xml
y crea tu interfaz de usuario/diseño. Aquí hay una muestra que creé para fines de demostración:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/dialog_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="@string/dialog_text"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@id/dialog_info">
<Button
android:id="@+id/dialog_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.50"
android:background="@color/dialog_cancel_bgcolor"
android:text="Cancel"/>
<Button
android:id="@+id/dialog_ok"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.50"
android:background="@color/dialog_ok_bgcolor"
android:text="Agree"/>
</LinearLayout>
</RelativeLayout>
Ahora puedes llamar openDialog()
desde cualquier lugar que desee 🙂 Aquí está la captura de pantalla del código anterior.

Tenga en cuenta que el texto y el color se utilizan de strings.xml
y colors.xml
. Puedes definir el tuyo propio.
Hoy en día es mejor usar DialogFragment en lugar de la creación directa de AlertDialog.
- ¿Cómo? Ver: https://stackoverflow.com/a/21032871/1390874
- ¿Por qué? Ver: https://stackoverflow.com/a/13765411/1390874
Aquí estás : desarrollador.android.com/guide/topics/ui/dialogs.html
– Michael Polla
25 de julio de 2016 a las 14:43
¿Por qué no usas la biblioteca Material Dialog?
– Vivek_Neel
28 de julio de 2016 a las 18:04
Para ver ejemplos de alertas de uno, dos y tres botones, consulte esta respuesta.
– Suragch
20 de abril de 2017 a las 12:21
Posible duplicado de ¿Cómo implementar una DialogPreference de confirmación (sí/no)?
–Alwin Kesler
12 de marzo de 2018 a las 5:26