如何为setCanceledOnTouchOutside创建监听器(true)

时间:2013-02-26 15:46:12

标签: android android-dialog android-dialogfragment

我正在一个项目中工作,当用户选择图像时,该项目会打开带有图像的对话框。现在由于要求我必须在对话框外面触摸时关闭对话框,所以我设置了dialog.setCanceledOnTouchOutside(true)。 但另一个要求是,我应该在用户触摸对话框后立即更改页面,以便我试图找出如何做到这一点。但我尝试了onCancelListeneronDismissListener。当我们使用dialog.setCanceledOnTouchOutside(true)时,它们都不会被调用。取消对话框。

2 个答案:

答案 0 :(得分:3)

如果您使用的是DialogFragment类,请覆盖其onCancel()方法:

@Override public void onCancel(DialogInterface dialog) {
    super.onCancel(dialog);

    ...
}

答案 1 :(得分:0)

我的理解是您无法使用setCanceledOnTouchOutside添加其他处理 作为替代方案,你可以覆盖你的onTouchEvent,当他们使用MotionEvent.ACTION_OUTSIDE这样触摸盒子时做这些事情

public boolean onTouchEvent(MotionEvent event)  
{  

   if(event.getAction() == MotionEvent.ACTION_OUTSIDE){  
           doStuff(); 
           this.dismiss();  
   }  
   return false;  
}