2012-03-01 19 views
26

Vorrei sapere come risolvere un problema che ho.Come si attiva un evento quando il clic si verifica all'esterno di una finestra di dialogo

Ho una finestra di dialogo che si apre in un'attività. La finestra di dialogo non copre l'intero schermo, quindi i pulsanti dell'attività continuano a essere visualizzati. Posso chiudere facilmente la finestra di dialogo quando c'è un tocco fuori dai limiti della finestra di dialogo con dialog.setCanceledOnTouchOutside(true);

Tuttavia, ciò che voglio fare è generare un evento se un clic è all'esterno dei limiti della finestra di dialogo (ad esempio se qualcuno tocca un pulsante sull'attività principale , dovrebbe chiudere la finestra di dialogo e sparare a quell'evento nello stesso momento).

+1

La soluzione normale sarebbe quella di rendere il dialogo modale. Perché non vuoi farlo? –

+0

Grazie. Sto cercando di mostrare una webview (nella finestra di dialogo) all'interno della mia attività principale in modo da mantenere l'aspetto dell'applicazione. – fizo07

risposta

40

Quando dialog.setCanceledOnTouchOutside(true); poi basta sovrascrivere onCancel() come questo:

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. 
      } 
     } 
); 

digitare il codice all'interno del metodo onCancel() quindi viene eseguito quando la finestra di dialogo viene annullata.

+0

risposta migliore .. dopo 2 anni si riferisce anche la stessa risposta ... impossibile rinnovare di nuovo :) –

+0

OVERRIDING Dialog.onCancel (...) funziona, ma dialog.setOnCancelListener (. ..) non ha funzionato per me. – user1269737

Problemi correlati