点击返回键,关闭Dialog,并且关闭Activity
当我们点击返回键,需要将整个Activity和Dialog一块关闭时。我们首先想到的就是通过onKeyDown()方法,重写Activity的返回键事件;但结果并不愉快,好像没有达到我们想要的效果。
原来是Dialog抢走了Activity的焦点,Activity不再是当前的焦点,所以无法获取back键事件,因此我们需要重写Dialog的返回键事件:
// 监听 Dialog 的 Key 事件
mDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 关闭 Dialog
dialog.dismiss();
// 关闭当前 Activity
finish();
// 返回 true,表示返回事件已被处理,不再向下传递
return true;
} else {
return false;
}
}
});
后来又看到另外一种方法,好像更加方便:
// 监听 Cancel 事件
mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// 关闭 Dialog
dialog.dismiss();
// 关闭当前 Activity
finish();
}
});
注意:在设置setCancelable(false)时,setOnCancelListener()无效。