У меня есть обычная активность с меню параметров, которое я создал с помощью этого кода:
@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), когда я нажимаю кнопку меню, приложение падает с этим исключением:
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)
Я не могу локализовать ресурс с идентификатором #0x1090044 (его нет ни в моем R.java, ни в других файлах), и я не знаю, каким он должен быть. Может быть, какая-то внутренняя структура меню? Я уже и пробовал чистить проект. Я знаю, что существуют новые «правила дизайна» для Android 4.0 ICS и использование панели действий вместо старого меню, но мне нужно, чтобы этот код работал даже на ICS по разным причинам. Должен ли я как-то отредактировать этот код, чтобы он работал даже на ICS? Я также уже пытался создать меню из файла XML, используя этот код с тем же исключением.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
Спасибо за любой совет!
menu.add()
и отлично работает на ICS. - person CommonsWare   schedule 20.12.2011getMenuView
, и в настоящее время нет способа ее перехватить и остановить. В моем случае я просто удаляю использование меню опций. - person Femi   schedule 18.04.2012