点击返回键,关闭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()无效。