时,我有正常活动与选项菜单,这是我这段代码创建:崩溃打开选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "A");
menu.add(0, 2, 0, "B");
menu.add(0, 3, 0, "C");
return true;
}
在Android 2.3及以上(2.2,2.1)是样样精。但是,当我运行在Android 4.0(ICS - 模拟器,Galaxy Nexus的的Nexus S)这个程序当我按下菜单按钮的应用程序crashdown与此异常:
W/ResourceType(9263): Failure getting entry for 0x01090044 (t=8 e=68) in package 0 (error -75)
D/AndroidRuntime(9263): Shutting down VM
W/dalvikvm(9263): threadid=1: thread exiting with uncaught exception (group=0x40a4a1f8)
FATAL EXCEPTION: main
android.content.res.Resources$NotFoundException: Resource ID #0x1090044
E/AndroidRuntime(9263):
at android.content.res.Resources.getValue(Resources.java:1019)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2107)
at android.content.res.Resources.getLayout(Resources.java:858)
at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
at com.android.internal.view.menu.BaseMenuPresenter.getMenuView(BaseMenuPresenter.java:70)
at com.android.internal.policy.impl.PhoneWindow$PanelFeatureState.getIconMenuView(PhoneWindow.java:3298)
at com.android.internal.policy.impl.PhoneWindow.initializePanelContent(PhoneWindow.java:1096)
at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:559)
at com.android.internal.policy.impl.PhoneWindow.onKeyUpPanel(PhoneWindow.java:817)
at com.android.internal.policy.impl.PhoneWindow.onKeyUp(PhoneWindow.java:1486)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1813)
at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3300)
at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3273)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2436)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
我无法与ID#0x1090044本地化资源(它不在我的R.java或任何其他文件中),我不知道它应该是什么。也许一些内部菜单布局?我也试图清理这个项目。 我知道Android 4.0 ICS有新的“设计规则”,并使用Action Bar代替旧菜单,但是我需要此代码即使在ICS上也有许多不同的原因。我应该如何编辑此代码即使在ICS上也能工作? 我也已经尝试使用此代码从XML文件创建菜单,但也有例外。
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
谢谢任何建议!
[此示例项目(https://github.com/commonsguy/cw-android/tree/master/Menus/Menus)创建一个从'menu.add()'选项菜单,并能正常工作在ICS上。 – CommonsWare 2011-12-20 18:53:14
谢谢。我知道如何创建选项菜单,我很确定它在ICS上工作。但在我的情况和我目前的项目中有这种错误,不知道它是怎么做的。 – Warlock 2011-12-21 13:13:12
我给你提供一个工作示例项目的原因是,你可以开始比较你正在做的和正在工作的示例项目做什么,直到你发现事情出错的地方。 – CommonsWare 2011-12-21 13:42:19