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