I found something on the android dev site that might be useful (see the section "Changing menu items at runtime")
He said that the onCreateOptionsMenu() method only starts when a menu for an action is created, and that happens when that action starts. Therefore, if you want to change menu items after a menu / action has been created, you should instead override the onPrepareOptionsMenu() method. Find the link for full details.
EDIT:
Just did it and it works great. I use one boolean var per menuItem , which represents whether this element should be included or not. This is my code:
/*************************************Game Menu**************************************/ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.game_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.gm_new_game: //newGame(); return true; case R.id.gm_stand_up: //some code when "gm_stand_up" button clicked.. return true; case R.id.gm_forfeit: //some code when "gm_forfeit" button clicked.. return true; case R.id.gm_surrender: //some code when "gm_surrender" button clicked.. return true; case R.id.gm_exit_table: exitTableCommand(); return true; default: return super.onOptionsItemSelected(item); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.gm_forfeit).setEnabled(forfeitMenuButtonIsEnabled); menu.findItem(R.id.gm_surrender).setEnabled(surrenderMenuButtonIsEnabled); menu.findItem(R.id.gm_new_game).setEnabled(newGameMenuButtonIsEnabled); menu.findItem(R.id.gm_stand_up).setEnabled(standUpMenuButtonIsEnabled); return super.onPrepareOptionsMenu(menu); }
source share