当对话框被点击到外面时,如何捕获触摸事件

7
在我的活动中有一个对话框(Dialog),我希望假设对话框已经打开,那么当用户触摸对话框外部时,我想要关闭对话框,并且同时调用一个函数,在我的活动中进行一些更新。

起初,我使用了MyDialog.setCanceledOnTouchOutside(true)。但这只会关闭对话框,在我的情况下,我还想在用户单击对话框外部时调用一些函数。那么我该怎么办呢?我知道如果可以扩展Dialog类并重写其onTouchEvent方法,那么问题就解决了,但在我的情况下,我的类已经扩展了Activity类,在Java中我们不能同时扩展多个类。

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


这个链接看起来类似于你想要实现的功能。link - geekoraul
@geekoraul,我不认为你读懂了我的问题...... - AndroidDev
@AndroidCoder:我的 MyDialog.setCanceledOnTouchOutside(false) 帮助我限制对话框的取消,但在这种情况下,对话框按钮的焦点也会丢失...你有什么想法如何保持对话框按钮的焦点,即使在点击外部时。 - CoDe
1个回答

2

这段代码用于完成一个活动... 但在我的情况下,我想要关闭一个对话框。 - AndroidDev
我明白了,抱歉。你能使用相同的逻辑吗?如果你设置MyDialog.setCanceledOnTouchOutside(false);然后捕获触摸事件并通过编程方式关闭对话框呢? - Tony
能否给我展示一个例子代码?如果可能的话,应该使用哪个函数来捕获触摸外部。 - AndroidDev
不是为了那个,而是看到对话框有一个OnCancelListener。这里有一些示例代码:https://dev59.com/S0vSa4cB1Zd3GeqPg8BG 可能会有所帮助。 - Tony
虽然问题不是关于这个的,但在问题的代码块内OnPrepareDialog中,有一个onCancelListener..我认为你可以在里面添加你想要执行的代码,一旦对话框取消。 - Tony
是的,事情开始工作了。我要做的第一件事是设置setCanceledOnTouchOutside(true),然后调用setOnCancelListener...谢谢伙计。 - AndroidDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接