Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android菜单,在运行PrepareOptions功能表时引发IndexOutOfBoundsException_Android_Exception_Menu_Menuitem - Fatal编程技术网

Android菜单,在运行PrepareOptions功能表时引发IndexOutOfBoundsException

Android菜单,在运行PrepareOptions功能表时引发IndexOutOfBoundsException,android,exception,menu,menuitem,Android,Exception,Menu,Menuitem,当我尝试更新菜单中的菜单项时,我收到IndexOutOfBoundsException 我已经在xml中添加了菜单项,当enable()==false时可以看到它 我的代码: public boolean onPrepareOptionsMenu(Menu menu) { if ( enable() ) { MenuItem menuItem= menu.getItem(R.id.menu_item); menuItem.setEnabled(true);

当我尝试更新菜单中的菜单项时,我收到IndexOutOfBoundsException

我已经在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);
}
如何处理这个问题


干杯。

您可能需要清理项目以更新R的值。 如果你喜欢另一种方式,你可以这样做

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

for(int i=0;i也有同样的问题。如果您不小心使用了
getItem()
而不是
findItem()
,就会发生这种情况


在访问其内容之前,您可能需要调用
super.onPrepareOptions功能表
。也可以使用
菜单.findItem
。好的,将getItem更改为findItem后,应用程序不会出现异常。工作起来很有魅力。
MenuItem menuItem = menu.findItem(R.id.menu_item);