Меню Android, генерирующее исключение IndexOutOfBoundsException при запуске onPrepareOptionsMenu - PullRequest
8 голосов
/ 09 ноября 2011

Когда я пытаюсь обновить свой MenuItem в меню, я получаю 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);
}

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

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

Ответы [ 2 ]

47 голосов
/ 14 июня 2013

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

MenuItem menuItem= menu.findItem(R.id.menu_item);
1 голос
/ 09 ноября 2011

Вероятно, вам нужно очистить ваш проект, чтобы обновить значения 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); * +1006 *

...