原因是:点击返回键的时候,键盘首先消费了返回事件,再点击返回键的时候,是popupwindow消费了返回事件,最后才是activity消费返回事件,
所以需要重写onKeyDown 方法。
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { System.out.println("按下了back键 onKeyDown()"); popupWindow.dismiss(); finish(); return true; }else { return super.onKeyDown(keyCode, event); } }