思路:
我们往往想实现一种功能,就是让 dialog 强制显示的时候不被用户误触屏幕取消,而且又必须留有取消的入口,在 dialog 中添加按钮实现又太难看,这个时候往往会在 activity onBackPresse 事件中实现取消 dialog,但是 dialog 在 activity 的上层,触摸事件传递不到activity中就被 dialog 消费掉,这时就得给 dialog 添加 OnKeyListener 来解决。
ProgressDialog dialog = new ProgressDialog(getContext());
dialog.setMessage("查询中,请稍后");
dialog.setCancelable(false);
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
dialog.dismiss();
// 取消查询,将回调取消
sendThread.cancelAllTask();
}
return false;
}
});
}
}