Pro*_*tef 1 android menuitem android-menu indexoutofboundsexception
我正在尝试将特定的用户名设置为特定的菜单项,然后使用
LoggedUser = (String) menu.getItem(R.id.User).getTitle().toString();
Run Code Online (Sandbox Code Playgroud)
喜欢 :
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.User).setTitle("username");
LoggedUse0r=(String) menu.getItem(R.id.User).getTitle().toString();
invalidateOptionsMenu();
return super.onPrepareOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
我宣布
invalidateOptionsMenu();
Run Code Online (Sandbox Code Playgroud)
用不同的方法
onCreate(), onStart(), onResume()
Run Code Online (Sandbox Code Playgroud)
但是,我的应用崩溃了,并给了我这个例外:
11-02 07:44:52.112 8714-8714 / com.example.prof_mohamedatef.listview E / AndroidRuntime:致命例外:main java.lang.IndexOutOfBoundsException:无效的索引2131492986,java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList)的大小为4 .java:251),位于com.example.android.support.v7.view.menu.MenuBuilder.getItem(MenuBuilder.java:729),位于java.util.ArrayList.get(ArrayList.java:304)。prof_mohamedatef.listview.Booking_hotels.onPrepareOptionsMenu(Booking_hotels.java:194)在android.app.Activity.onPreparePanel(Activity.java:2570)在android.support.v4.app.FragmentActivity.onPrepareOptionsPanel(FragmentActivity.java:532)在android .support.v4.app.FragmentActivity.onPreparePanel(FragmentActivity.java:521)在android.support.v7.view.WindowCallbackWrapper.onPreparePanel(WindowCallbackWrapper.java:93),位于android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java.support:1380)上的android.support.v7.app.AppCompatDelegateImplBase $ AppCompatWindowCallbackBase.onPreparePanel(AppCompatDelegateImplBase.java:355)上。 .appCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1633)在android.support.v7.app.AppCompatDelegateImplV9.access $ 100(AppCompatDelegateImplV9.java:93),位于android.os.Handler.dispatchMessage(Handler.java:android.os.Handler.handleCallback(Handler.java:725)的android.support.v7.app.AppCompatDelegateImplV9 $ 1.run(AppCompatDelegateImplV9.java:129) 92)在android.os.Looper.loop(Looper.java:137)在android.app.ActivityThread.main(ActivityThread.java:5283),位于java.lang.reflect.Method.invokeNative(本机方法),位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java.lang.reflect.Method.invoke(Method.java:511)处。 java:1102)位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)位于dalvik.system.NativeStart.main(本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)处java.lang.reflect.Method.invoke(Method.java:511)处的invokeNative(Native Method) dalvik.system.NativeStart.main上的os.ZygoteInit.main(ZygoteInit.java:869)(本机方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)处java.lang.reflect.Method.invoke(Method.java:511)处的invokeNative(Native Method) dalvik.system.NativeStart.main上的os.ZygoteInit.main(ZygoteInit.java:869)(本机方法)内部的os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)在dalvik.system.NativeStart.main(本机方法)内部的os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)在dalvik.system.NativeStart.main(本机方法)
任何人都可以告诉我获取项目标题的String与此类异常之间有什么关系:
IndexOutOfBoundsException:
Run Code Online (Sandbox Code Playgroud)
您的回复将不胜感激,在此先感谢
尝试这个。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.your_menu, menu);
MenuItem item = menu.findItem(R.id.your_menu_item);
String loggedInUser = item.getTitle().toString();
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |