Меню Android, вызывающее исключение IndexOutOfBoundsException при запуске onPrepareOptionsMenu

#android #exception #menu #menuitem

#Android #исключение #меню #элемент меню

Вопрос:

Когда я пытаюсь обновить свой элемент меню в меню, я получаю исключение IndexOutOfBoundsException.

Я добавил menu_item в xml, и я вижу его, когда enable () == false.

Мой код:

 public boolean onPrepareOptionsMenu(Menu menu) {
    if ( enable() ) {
        MenuItem menuItem= menu.getItem(R.id.menu_item);
        menuItem.setEnabled(true);
    }
    return super.onPrepareOptionsMenu(menu);
}
  

Как бороться с проблемой?

Приветствия.

Комментарии:

1. Возможно, вам захочется вызвать super.onPrepareOptionsMenu перед доступом к его содержимому. Также используйте Menu.findItem вместо этого.

2. Хорошо, после изменения GetItem на FindItem приложение не выдает исключения. Работает как шарм.

Ответ №1:

Только что была такая же проблема. Произойдет, если вы случайно используете getItem() вместо findItem() .

 MenuItem menuItem = menu.findItem(R.id.menu_item);
  

Ответ №2:

Вероятно, вам нужно очистить свой проект, чтобы обновить значения R. Если вы предпочитаете другой способ, вы можете сделать

 for(int i = 0; i<menu.size();  i)
{
    if(menu.getItem(i).getItemId() == R.id.menu_item)
         MenuItem menuItem = menu.getItem(i);
}
  

или выберите более красивый

menu.FindItem(R.id.menu_item);