accesing菜單項我有一個菜單 -有時獲取IndexOutOfBound而在Android的
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.ju_group.health_assist.MainActivity">
<item
android:id="@+id/help"
android:checkable="false"
android:icon="@android:drawable/ic_menu_help"
android:title="Help"
app:showAsAction="ifRoom"/>
<group
android:id="@+id/disable"
android:checkableBehavior="all"
android:visible="true">
<item
android:id="@+id/dis_new"
android:title="Disable PopUp"
android:visible="true"/>
</group>
</menu>
所以我訪問項目dis_new
IN-
getMenuInflater().inflate(R.menu.menu_main, menu);
if(disable_popup==1)
menu.getItem(R.id.dis_new).setChecked(true); //here I'm getting error
return true; //we have inflated the menu
}
disable_popup
較早設置爲1或0,這取決於在某些條件下。
現在我收到一個IndexOutOfBound異常,當我設置項目檢查。
但很多時候它正在正確執行(與disable_popup
值0和1)。
java.lang.IndexOutOfBoundsException: Invalid index 2131624239, size is 2
是異常消息。
我用try-catch來包含錯誤並採取了適當的步驟,但我想知道是什麼導致錯誤。
編輯:堆棧跟蹤
FATAL EXCEPTION: main
Process: com.example.*******, PID: 829
java.lang.IndexOutOfBoundsException: Invalid index 2131624239, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at android.support.v7.view.menu.MenuBuilder.getItem(MenuBuilder.java:741)
at com.example.*****.SymptomsAnalyze.onCreateOptionsMenu(SymptomsAnalyze.java:113)
at android.app.Activity.onCreatePanelMenu(Activity.java:2538)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:362)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:335)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:98)
at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454)
at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
你能粘貼整個堆棧跟蹤嗎? –
由其ID得到一個菜單項,使用'則findItem()'代替。 'getItem()'通過索引檢索。 –