2012-03-01 9 views
26

Me gustaría saber cómo resolver un problema que tengo.Cómo disparo un evento cuando se produce un clic fuera de un cuadro de diálogo

Tengo un cuadro de diálogo que aparece en una actividad. El cuadro de diálogo no cubre toda la pantalla, por lo que los botones de la actividad aún se muestran. Puedo cerrar el diálogo fácilmente cuando hay un toque fuera de los límites del diálogo con dialog.setCanceledOnTouchOutside(true);

Sin embargo, lo que quiero hacer es disparar un evento si un clic está fuera de los límites del diálogo (por ejemplo, si alguien toca un botón en la actividad principal , debe cerrar el cuadro de diálogo e iniciar ese evento al mismo tiempo).

+1

La solución normal sería hacer el diálogo modal. ¿Por qué no quieres hacer eso? –

+0

Gracias. Intento mostrar una vista web (en el cuadro de diálogo) dentro de mi actividad principal para que mantenga el aspecto de la aplicación. – fizo07

Respuesta

40

Cuando dialog.setCanceledOnTouchOutside(true); entonces sólo anula onCancel() así:

dialog.setOnCancelListener(
     new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialog) { 
       //When you touch outside of dialog bounds, 
       //the dialog gets canceled and this method executes. 
      } 
     } 
); 

escribe el código dentro del método onCancel() por lo que se ejecuta cuando se cancela el diálogo.

+0

mejor respuesta ... después de 2 años también se refieren a la misma respuesta ... no se puede volver a votar :) –

+0

OVERRIDING Dialog.onCancel (...) funciona, pero dialog.setOnCancelListener (. ..) no funcionó para mí. – user1269737

Cuestiones relacionadas