最近使用TabActivity,按下返回键却发现onKeyDown方法根本没有被调用,Google之,有人说需要在每个子Activity中实现相应的监听,无奈过于麻烦。

            
  1. @Override 
  2. public boolean onKeyDown(int keyCode, KeyEvent event) { 
  3.     if (keyCode == KeyEvent.KEYCODE_BACK) { 
  4.         exit(); 
  5.         return true
  6.     } 
  7.     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);以免其他键得不到系统处理,代码如下:

            
  1. @Override 
  2. public boolean dispatchKeyEvent(KeyEvent event) { 
  3.     if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 
  4.         if (event.getAction() == KeyEvent.ACTION_DOWN 
  5.                 && event.getRepeatCount() == 0) { 
  6.             exit(); 
  7.             return true
  8.         } 
  9.     } 
  10.     return super.dispatchKeyEvent(event); 

 

更多相关文章

  1. Android(安卓)App 退出整个应用
  2. Android动态加载View的几种方法
  3. Android(安卓)CountDownTimer倒计时器的使用
  4. android 平滑切换屏幕的几种方法总结
  5. android showSoftInput方法调用软键盘不显示
  6. Android(安卓)webView与JavaScript的交互
  7. android-market-api
  8. 走进Java Android(安卓)的线程世界(三)Hander消息机制
  9. android 应用程序4种编译方法

随机推荐

  1. Android开发人员应避免的10个误区
  2. Android前台画面和后台service之间通信的
  3. Android代码混淆防反编译解决方案研究
  4. Android Button控件的使用
  5. Android 应用程序开发---编程指导标准(初
  6. Android应用程序的Life Cycle
  7. Android学习网怎么来建设它呢?
  8. Android:带你玩转Servie,子线程,与UI线程通
  9. Android源代码是这样搞到的(图解)
  10. Android 蓝牙开发基本流程