私のアプリにはいくつかのアクティビティがあり、すべてに同じオプションメニューがあります。 1つのアクティビティ(ListViewサブクラス)でのみ正常に動作し、メニューボタンをクリックするとクラッシュします。
これは、4.x(おそらく3.x - チェックできません)でのみ発生しますが、2.3以前では発生しません。エミュレータとさまざまなデバイスでテストされています。
興味深い事実:アクティビティがレンダリングされた後にデバイスを回転させてメニューボタンを押すと、正常に動作します。
また、リストアダプタがまだ読み込まれていて、リストが空の間、メニューは機能します。リストがいっぱいになると、問題が発生します(前述のバージョン2.3より上)
メニュー自体はリソースなしのシンプルな1ライナーになる可能性があります。
オプションメニューコード:
/**
* Prepare the options menu
* @param menu The menu
* @return You must return true for the menu to be displayed; if you return false it will not be shown.
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
title = getString(R.string.optionsmenu_search);
MenuItem item1 = menu.add(Menu.NONE, MENU_SEARCH, Menu.NONE, title);
item1.setIcon(R.drawable.ic_menu_search);
return super.onPrepareOptionsMenu(menu);
}
* Handle options menu click
* @param item menu item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
// ...
}
return OptionsMenu.itemSelected(this, item) || super.onOptionsItemSelected(item);
}
例外は、アプリケーションコードでは発生しません、またそれがアプリのressourceに参照するように思えるん(それらが存在する、Rは、何回も再構築/削除された、プロジェクトなどをクリア)
スタックトレース: (いくつかのXMLリソースを参照するように見えますが、メニューには、XMLベースではありません)
04-13 23:45:39.081: E/AndroidRuntime(2933): FATAL EXCEPTION: main
04-13 23:45:39.081: E/AndroidRuntime(2933): android.content.res.Resources$NotFoundException: Resource ID #0x1090044
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.content.res.Resources.getValue(Resources.java:1019)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2107)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.content.res.Resources.getLayout(Resources.java:858)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.view.menu.BaseMenuPresenter.getMenuView(BaseMenuPresenter.java:70)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.policy.impl.PhoneWindow$PanelFeatureState.getIconMenuView(PhoneWindow.java:3298)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.policy.impl.PhoneWindow.initializePanelContent(PhoneWindow.java:1096)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.policy.impl.PhoneWindow.openPanel(PhoneWindow.java:559)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.policy.impl.PhoneWindow.onKeyUpPanel(PhoneWindow.java:817)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.policy.impl.PhoneWindow.onKeyUp(PhoneWindow.java:1486)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1813)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3300)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3273)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2436)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.os.Handler.dispatchMessage(Handler.java:99)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.os.Looper.loop(Looper.java:137)
04-13 23:45:39.081: E/AndroidRuntime(2933): at android.app.ActivityThread.main(ActivityThread.java:4340)
04-13 23:45:39.081: E/AndroidRuntime(2933): at java.lang.reflect.Method.invokeNative(Native Method)
04-13 23:45:39.081: E/AndroidRuntime(2933): at java.lang.reflect.Method.invoke(Method.java:511)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-13 23:45:39.081: E/AndroidRuntime(2933): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-13 23:45:39.081: E/AndroidRuntime(2933): at dalvik.system.NativeStart.main(Native Method)
任意のアイデア?ヘルプは大いに感謝しています、それは1つのプレリリースブロッカーです。
は、そのmenu.xmlです(または、何か0x1090044です -/gen /のR.javaを参照してください)? – zapl
xmlメニューはありません。上記のリソースはアプリのものではなく、Androidの内部リソースである必要があります。 – Bachi
誰かを助ける場合には、grepcode.comのおかげで、上のスタックトレースのAndroidソースコードがあります:http://tinyurl.com/cbpo882 – Bachi