Android菜单,在运行PrepareOptions功能表时引发IndexOutOfBoundsException
当我尝试更新菜单中的菜单项时,我收到IndexOutOfBoundsException 我已经在xml中添加了菜单项,当enable()==false时可以看到它 我的代码: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);
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);