Я нашел что-то на android dev site , что может быть полезно (смотрите раздел «Изменение пунктов меню во время выполнения»)
В нем говорится, что метод onCreateOptionsMenu()
срабатывает толькокогда создается меню для действия, и это происходит, когда начинается это действие.Поэтому, если вы хотите изменить пункты меню после того, как меню / действие было создано, вам нужно переопределить метод onPrepareOptionsMenu()
.поиск по ссылке для получения полной информации.
РЕДАКТИРОВАТЬ:
Только что сделал и все работает нормально.Я использую один boolean var
на menuItem
, который представляет, должен ли этот элемент быть включен или нет.Это мой код:
/*************************************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);
}