2011-11-09 13 views
5

चलाते समय जब मैं मेनू में मेरी MenuItem मैं IndexOutOfBoundsException प्राप्त अद्यतन करने के लिए प्रयास करें।एंड्रॉयड मेनू, IndexOutOfBoundsException फेंकने onPrepareOptionsMenu

मैं एक्सएमएल में menu_item जोड़ दिया है और मैं इसे देख सकते हैं जब सक्षम() == झूठी।

मेरे कोड:

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

ठीक है, findItem को GetItem बदलने के बाद, अनुप्रयोग नहीं thorow अपवाद नहीं है। एक जादू की तरह काम करता है। – neciu

उत्तर

1

शायद आप, आप

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

करते हैं या (एक अधिक सुंदर

menu.findItem के लिए चुनते हैं आर कर सकते हैं एक और तरीका पसंद करते हैं आर के मूल्यों को अद्यतन करने के अपने प्रोजेक्ट को साफ करने की जरूरत है .id.menu_item);

37

बस एक ही समस्या थी। यदि ऐसा होता है अगर आप गलती से findItem() के बजाय getItem() का उपयोग करें।

MenuItem menuItem= menu.findItem(R.id.menu_item); 
संबंधित मुद्दे