博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理KeyDown和Menu事件所遇到的问题
阅读量:5275 次
发布时间:2019-06-14

本文共 1101 字,大约阅读时间需要 3 分钟。

原来对按键事件处理的程序
1 @Override  2 public boolean onKeyDown(int keyCode, KeyEvent event) {  3         Intent intent = new Intent();  4         if(keyCode==KeyEvent.KEYCODE_BACK){  5                 }  6               7         return true;  8     }

 

 

理论上来说,点击手机上的Menu键,会出现菜单选项,但是运行始终没有反应,Log日志显示:

11-05 06:56:11.932: W/KeyCharacterMap(1754): No keyboard for id 0

11-05 06:56:11.942: W/KeyCharacterMap(1754): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

后来把代码OnkeyDown改成下面的,就OK了

OnkeyDown修改
@Override  public boolean onKeyDown(int keyCode, KeyEvent event) {          Intent intent = new Intent();  if(keyCode==KeyEvent.KEYCODE_BACK){                  }          return super.onKeyDown(keyCode, event);      }

这是什么原因呢,我想应该是因为我一开始直接返回了一个true,因为Menu按键事件是属于OnkeyDown事件的,所以方法OnkeyDown事件肯定会优先响应了,因为最后直接返回了一个true给父类,所以默认是对Menu按键事件进行了响应并处理,便不会再去处理onCreateOptionsMenu方法和onOptionsItemSelected方法了;相反,返回的是super.onKeyDown(keyCode, event);因为没有对Menu事件做相应的响应和处理,相当于是返回了一个false,所以就会去执行onCreateOptionsMenu方法和onOptionsItemSelected方法,这两个方法了

原文地址:

转载于:https://www.cnblogs.com/java-intern/archive/2011/12/01/2270342.html

你可能感兴趣的文章
WPF使用RoutedCommand自定义命令
查看>>
Notepad++如何编译、运行Java
查看>>
高效学习,战胜拖延症
查看>>
如何将读书与自己的生活工作结合起来?
查看>>
理解php中的yield
查看>>
线性变化和非线性变化
查看>>
用VS向SharePoint中部署添加List 并指定应用的Content Type
查看>>
Salesforce中所有常用类型字段的取值与赋值
查看>>
learn python the hard way习题31~40总结以及列表的扩展知识
查看>>
mkfs的使用
查看>>
存储过程
查看>>
android源码查看源码的版本
查看>>
Python档案袋( Sys 与 Import 模块)
查看>>
TStringList.SaveToStream TStringStream.SaveToStream
查看>>
HITAG 2 125kHz RFID IC Read-Write 256 bits
查看>>
1.25-1.26 Coordinator数据集和oozie bundle
查看>>
[POJ1155]TELE
查看>>
指针小结
查看>>
牛x的面试知识点
查看>>
iOS多线程开发(三)---Run Loop(一)
查看>>