您的位置:首页 > 其它

Menu 菜单基本创建 以及无法弹出问题

2013-05-16 11:51 295 查看
在Activity 中创建Menu菜单的基本步奏方法很简单:重写Activity onCreateOptionsMenu(Menu menu) 方法载入布局文件,并且返回true(注意:必须的返回true,否则系统不知道你是否需要创建Menu菜单),然后在 onOptionsItemSelected(MenuItem item) 监听执行即可。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.d(TAG, "into onCreateOptionsMenu()");
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "into onOptionsItemSelected()");
switch (item.getItemId()) {
case R.id.menu_normal:
if(playMode==PlayMode.NORMAL){
return true;
}
playMode = PlayMode.NORMAL;
changePlayMode(playMode);
timerView.stopTimer();
return true;
case R.id.menu_time:
if(playMode==PlayMode.TIME){
return true;
}
playMode =PlayMode.TIME;
changePlayMode(playMode);
return true;
case R.id.menu_set:
WSDialog.getInstance(this).createMutilDialog();
return true;
case R.id.menu_net_play:
goUsersListActivity();
return true;
}
return super.onOptionsItemSelected(item);
}


但是,有时候会出现Menu菜单显示不了的情况,目前自己发现的原因有两个,希望大家多多指教:
1.如上所说,在onCreateOptionsMenu(Menu menu) 没有返回true

2.Activity重写onKeyDown()方法监听按键响应;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK&& event.getAction() == KeyEvent.ACTION_DOWN) {
Log.d(TAG, "into onKeyDown()");
//应用程序退出,发出下线通知
netThreadHelper.noticeOffline();
netThreadHelper.disconnectSocket();
this.finish();
System.exit(0);
Log.d(TAG, "out onKeyDown()");
return true;
}
return true;
}
方法返回true,系统就不会处理Menu 按键,自然就会没有反应。

所以,根据android事件处理机制,应该调用系统的方法,将红色部分代码改为:

return super.onKeyDown(keyCode, event);即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐