2011-11-09 7 views
5

Quando si tenta di aggiornare il mio MenuItem nel menu, ricevo IndexOutOfBoundsException.Menu Android, lancio di IndexOutOfBoundsException durante l'esecuzione suPrepareOptionsMenu

Ho aggiunto menu_item in xml e posso vederlo quando enable() == false.

Il mio codice:

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

Come affrontare il problema?

Cheers.

+2

Si potrebbe voler chiamare 'super.onPrepareOptionsMenu' prima di accedere ai suoi contenuti. Utilizza anche 'Menu.findItem'. – harism

+1

Ok, dopo aver cambiato getItem su findItem, l'app non fa eccezione. Funziona come un fascino. – neciu

risposta

1

Probabilmente è necessario pulire il vostro progetto per aggiornare i valori di R. Se si preferisce un altro modo, si può fare

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

oppure optare per una più bella

menu.findItem (R .id.menu_item);

37

Appena avuto lo stesso problema. Avviene se si utilizza accidentalmente lo getItem() anziché findItem().

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