最近使用TabActivity,按下返回键却发现onKeyDown方法根本没有被调用,Google之,有人说需要在每个子Activity中实现相应的监听,无奈过于麻烦。
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- exit();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
具体的原因没有去深究,最后找到了解决的方法,参考:http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
在dispatchKeyEvent中处理Key事件,注意没有处理的键最后要调用super.dispatchKeyEvent(event);以免其他键得不到系统处理,代码如下:
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
- if (event.getAction() == KeyEvent.ACTION_DOWN
- && event.getRepeatCount() == 0) {
- exit();
- return true;
- }
- }
- return super.dispatchKeyEvent(event);
- }
本文转自 breezy_yuan 51CTO博客,原文链接:http://blog.51cto.com/lbrant/612709,如需转载请自行联系原作者