@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Intent intent = new Intent();
if(keyCode==KeyEvent.KEYCODE_BACK){
}
return true;
}
上面这段是对按键事件处理的程序
@Override public boolean onCreateOptionsMenu(Menu menu) { // 获取当前的菜单 MenuInflater inflater = getMenuInflater(); // 填充菜单 inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemID=item.getItemId(); switch(itemID){ case R.id.single_circle: music_paly.setMode(true); displaytoast("切换到单曲循环模式",Toast.LENGTH_LONG); break; case R.id.order_circle: music_paly.setMode(false); displaytoast("切换到顺序播放模式",Toast.LENGTH_LONG); break; } return true; }上面是对菜单按钮事件进行处理的程序
理论上来说,点击手机上的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了
@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方法,这两个方法了