【问题标题】:How to catch touch event of a dialog when it is clicked outside在外部单击对话框时如何捕获对话框的触摸事件
【发布时间】:2012-05-22 06:14:48
【问题描述】:

我的活动中有Dialog,我想要的是假设对话框已打开,然后在触摸外部对话框时我想关闭对话框,同时我想调用一个函数来执行一些操作更新我的活动。

最初我使用MyDialog.setCanceledOnTouchOutside(true); 但这些只会关闭,在我的情况下,同时我想在用户点击对话框外部时调用一些函数。所以我该怎么做?我知道,如果我可以扩展 Dialog 类并覆盖其 onTouchEvent 方法,那么它将得到解决,但就我而言,我的类已经扩展了 Activity 类,而在 java 中,我们不能扩展一个以上的类。

那么最好的解决方案是什么?请帮我解决这个问题。

【问题讨论】:

  • 此链接似乎与您想要实现的目标相似。 [链接][1] [1]:*.com/questions/5185517/…
  • @geekoraul 我不认为你读过我的问题.......
  • @AndroidCoder : MyDialog.setCanceledOnTouchOutside(false) 帮助我限制对话框的取消,但在这种情况下,焦点表单对话框按钮也丢失了......知道如何保持焦点在对话框按钮上点击外部.

标签: android


【解决方案1】:

此线程上的第二个答案显示了如何执行此操作(我自己使用过,有效):

How to cancel an Dialog themed like Activity when touched outside the window?

【讨论】:

  • 此代码用于完成一项活动..但在我的情况下,我想关闭一个 dilog
  • 我明白了,对不起。你能用同样的逻辑吗?如果设置 MyDialog.setCanceledOnTouchOutside(false);然后在外面捕捉触摸并以编程方式关闭对话框?
  • 你能给我看一个示例代码吗............如果可能的话......什么函数应该在外面捕捉......
  • 不是为了那个,而是看它是一个 OnCancelListener 的对话框。这里有一些示例代码:*.com/questions/2195497/… 可能有帮助
  • 这不是问题所在,而是在 OnPrepareDialog 内的问题代码块中,有一个 onCancelListener.. 里面我想你会在对话框取消后添加要执行的代码
最近更新 更多