2012-03-01 117 views
26

我想知道如何解決我遇到的問題。如何在對話框外發生點擊時觸發事件

我有一個彈出對話框的活動。對話框沒有覆蓋整個屏幕,所以活動中的按鈕仍然顯示。當對話框邊界之外有觸摸時,我可以很容易地關閉對話框dialog.setCanceledOnTouchOutside(true);

但是,我想要做的是觸發一個事件,如果點擊超出了對話框的界限(例如,如果有人觸摸了主Activity上的按鈕,它應該關閉對話框並同時觸發該事件)。

+1

正常的解決方案是使對話框模態。你爲什麼不想這樣做? – 2012-03-01 12:33:58

+0

謝謝。我試圖在我的主要活動中顯示一個webview(在對話框中),以保持應用程序的外觀。 – fizo07 2012-03-01 15:32:31

回答

40

dialog.setCanceledOnTouchOutside(true);,那麼你只覆蓋onCancel()這樣的:

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

鍵入onCancel()方法裏面的代碼所以它在對話框被取消時運行。

+0

最佳答案..後2年也指相同的答案...不能再upvote :) – 2017-05-03 19:17:02

+0

覆蓋Dialog.onCancel(...)的作品,但dialog.setOnCancelListener(。 ..)不適合我。 – user1269737 2017-07-06 19:18:58