2012-03-01 167 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