Android菜单,在运行onPrepareOptionsMenu时抛出IndexOutOfBoundsException

nec*_*ciu 9 android menu exception menuitem

当我尝试在菜单中更新我的MenuItem时,我收到了IndexOutOfBoundsException.

我在xml中添加了menu_item,当enable()== false时我可以看到它.

我的代码:

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

如何处理这个问题?

干杯.

Dan*_*rps 48

刚遇到同样的问题.如果你不小心使用getItem()而不是findItem().

MenuItem menuItem = menu.findItem(R.id.menu_item);
Run Code Online (Sandbox Code Playgroud)


Mak*_*s_F 1

可能您需要清理您的项目来更新 R 的值。如果您喜欢其他方式,您可以这样做

for(int i = 0; i<menu.size();++i)
{
    if(menu.getItem(i).getItemId() == R.id.menu_item)
         MenuItem menuItem = menu.getItem(i);
}
Run Code Online (Sandbox Code Playgroud)

或者选择更漂亮的

menu.findItem(R.id.menu_item);