所以我试图从Actionbar中取出我的菜单项并将它们设置为一些变量以便稍后使用.下面是一些基本测试代码,它尝试在创建选项菜单期间设置变量.当它启动它时崩溃并出现错误:
02-18 12:10:08.109: E/AndroIDRuntime(30931): FATAL EXCEPTION: main02-18 12:10:08.109: E/AndroIDRuntime(30931): Process: com.example.slIDer2, PID: 3093102-18 12:10:08.109: E/AndroIDRuntime(30931): java.lang.indexoutofboundsexception: InvalID index 2131230720, size is 102-18 12:10:08.109: E/AndroIDRuntime(30931): at java.util.ArrayList.throwindexoutofboundsexception(ArrayList.java:255)02-18 12:10:08.109: E/AndroIDRuntime(30931): at java.util.ArrayList.get(ArrayList.java:308)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.androID.internal.vIEw.menu.MenuBuilder.getItem(MenuBuilder.java:656)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.example.slIDer2.MainActivity.onCreateOptionsMenu(MainActivity.java:22)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.app.Activity.onCreatePanelMenu(Activity.java:2538)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.androID.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.androID.internal.policy.impl.PhoneWindow.doInvalIDatePanelMenu(PhoneWindow.java:800)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.androID.internal.policy.impl.PhoneWindow.run(PhoneWindow.java:221)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.vIEw.Choreographer$CallbackRecord.run(Choreographer.java:761)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.vIEw.Choreographer.doCallbacks(Choreographer.java:574)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.vIEw.Choreographer.doFrame(Choreographer.java:543)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.vIEw.Choreographer$FramedisplayEventReceiver.run(Choreographer.java:747)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.os.Handler.handleCallback(Handler.java:733)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.os.Handler.dispatchMessage(Handler.java:95)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.os.Looper.loop(Looper.java:136)02-18 12:10:08.109: E/AndroIDRuntime(30931): at androID.app.ActivityThread.main(ActivityThread.java:5017)02-18 12:10:08.109: E/AndroIDRuntime(30931): at java.lang.reflect.Method.invokeNative(Native Method)02-18 12:10:08.109: E/AndroIDRuntime(30931): at java.lang.reflect.Method.invoke(Method.java:515)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)02-18 12:10:08.109: E/AndroIDRuntime(30931): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:595)02-18 12:10:08.109: E/AndroIDRuntime(30931): at de.robv.androID.xposed.XposedBrIDge.main(XposedBrIDge.java:126)02-18 12:10:08.109: E/AndroIDRuntime(30931): at dalvik.system.NativeStart.main(Native Method)
MainActivity.java
public class MainActivity extends Activity { private MenuItem mRefresh; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); } @OverrIDe public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); mRefresh = menu.getItem(R.ID.refresh); return super.onCreateOptionsMenu(menu); }}
main_menu.xml
<menu xmlns:androID="http://schemas.androID.com/apk/res/androID" > <item androID:ID="@+ID/refresh" androID:icon="@drawable/ic_action_refresh" androID:showAsAction="ifRoom" androID:title="@string/refresh"/></menu>
关于我在这里做错了什么的想法?我需要能够 *** 作菜单项,而不仅仅是在它们被点击时.
解决方法:
MenuItem.getItem(index)取菜单项的索引而不是菜单项的ID,所以使用菜单项ID为的MenuItem.findItem:
mRefresh = menu.findItem(R.ID.refresh); //item ID OR mRefresh = menu.getItem(0); //item index
总结 以上是内存溢出为你收集整理的android – 如何访问菜单项?全部内容,希望文章能够帮你解决android – 如何访问菜单项?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)