¿Por qué setCanceledOnTouchOutside (false) no funciona en Alert Builder?

Tengo un diálogo de alerta en mi actividad y no quiero que el usuario pueda descartarlo haciendo clic fuera del diálogo. Basado en mi investigación ( como esto ) encontré setCanceledOnTouchOutside(false); método. Sin embargo, no pude usarlo en mi aplicación y es posible descartar el diálogo mientras tengo este método.

Este es mi código

 private AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setCanceledOnTouchOutside(false); alertDialog.setTitle(""); alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (intAlertAction) { case 1: case 2: case 3: default: } } }); 

Cualquier sugerencia sería apreciada.

Esta es una pregunta interesante y creo que sé su respuesta.

He estado probando una aplicación en diferentes plataformas y me di cuenta de una pequeña diferencia entre ellos. Por encima de android 4.0 cuando tocas un mensaje Toast, simplemente desaparece. Quess es lo mismo con diálogos (y AlertDialogs). Simplemente "desaparece" al tocar (pero no es descartado – simplemente no se puede ver).

Espero que ayudó!

setCanceledOnTouchOutside sólo impide descartar haciendo clic fuera del cuadro de diálogo. Pero todavía puede descartarlo con botón de retroceso, por ejemplo.

Si no desea que su diálogo sea cancelable en todo use dialog.setCancelable(false)

Acabo de probar su código (fijo) y funciona como se esperaba: el usuario no puede descartar el diálogo al hacer clic fuera de él. Intentalo:

  AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setCanceledOnTouchOutside(false); alertDialog.setTitle(""); alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); alertDialog.show(); 
 AlertDialog alertDialog; alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setCanceledOnTouchOutside(false); alertDialog.setCancelable(false); alertDialog.setTitle(""); alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); alertDialog.show(); 

sólo

 dialog.setCancelable(false); 

¡¡El problema está resuelto!!

  • Establecer el título del fragmento de diálogo para mostrar desde la derecha
  • Evitar que ProgressDialog sea rechazado cuando hago clic en el botón de búsqueda (Android)
  • Cómo evitar que un cuadro de diálogo se cierre cuando se hace clic en un botón
  • ¿Cómo cambiar el título de diálogo de Appcompat y el color del divisor de título?
  • Diálogo de PreferenciasActividad de Android con el selector de números
  • ¿Cómo cancelar un diálogo temático como Actividad cuando se toca fuera de la ventana?
  • Android: cómo crear una actividad transparente con temas de diálogo
  • AppCompatActivity como un diálogo sin título
  • ¿Cómo puedo mostrar mi actividad como un diálogo en Android?
  • ¿Qué significa 'indeterminado' en ProgressDialog?
  • Cómo utilizar selector de números con el cuadro de diálogo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.