#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);