2011-11-09 59 views
5

當我嘗試在菜單中更新我的MenuItem時,我收到IndexOutOfBoundsException。Android菜單,在運行onPrepareOptionsMenu時拋出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

您可能要在訪問其內容之前調用'super.onPrepareOptionsMenu'。也可以使用'Menu.findItem'。 – harism

+1

好吧,將getItem更改爲findItem後,應用程序不會發出異常。奇蹟般有效。 – neciu

回答

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);

37

剛剛有同樣的問題。如果您不小心使用getItem()而不是findItem(),則會發生此情況。

MenuItem menuItem= menu.findItem(R.id.menu_item); 
相關問題