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

来源:互联网 发布:win7网络发现自动关闭 编辑:程序博客网 时间:2024/04/29 06:13


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

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {Log.d(TAG, "into onCreateOptionsMenu()");getMenuInflater().inflate(R.menu.activity_main, menu);return true;}@Overridepublic 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()方法监听按键响应;

@Overridepublic 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);即可

 



原创粉丝点击