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

时间:2011-11-09 16:44:28

标签: android exception menu 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);
}

如何处理问题?

干杯。

2 个答案:

答案 0 :(得分:47)

刚遇到同样的问题。如果您不小心使用getItem()而不是findItem(),则会发生。

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

答案 1 :(得分:1)

您可能需要清理项目以更新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);