3

プログラムでメニューをセットアップしようとしていますが、私のメソッドは com.actionbarsherlock.view.Menu メニューをパラメーターとして取得します。メニュー項目のスタイルを変更したいので、 SpannableString スパン可能をセットアップし、それを渡して追加しようとしています。menu.add(0, MENU_ABOUT, 0, スパン可能); そのメニュー項目をクリックすると、ICS でのみクラッシュが発生します。何か不足している場合のアイデア。ありがとう、私が試しているコードは次のとおりです。アプリを実行して「アプリケーションについて」を選択するとクラッシュします。参考までに、メニュー項目にスタイルと色を追加したいので、私は SpannableString を使用しています。通常の文字列を使用するとクラッシュは発生しませんが、スタイリングはできません

    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu)
{
    SpannableString spannable = new SpannableString("About Application");
    menu.add(0, MENU_ABOUT, 0, spannable);
    return true;
}

スタック トレースは次のとおりです。

    09-05 02:25:32.849: E/AndroidRuntime(684): FATAL EXCEPTION: main
    09-05 02:25:32.849: E/AndroidRuntime(684): java.lang.IllegalArgumentException:  Invalid payload item type
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.util.EventLog.writeEvent(Native Method)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.app.Activity.onMenuItemSelected(Activity.java:2501)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:351)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:950)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.view.menu.ListMenuPresenter.onItemClick(ListMenuPresenter.java:163)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.widget.AdapterView.performItemClick(AdapterView.java:292)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.widget.AbsListView.onTouchEvent(AbsListView.java:3180)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.View.dispatchTouchEvent(View.java:5541)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1951)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1712)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1860)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.View.dispatchPointerEvent(View.java:5721)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2890)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2466)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2475)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.os.Handler.dispatchMessage(Handler.java:99)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.os.Looper.loop(Looper.java:137)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at java.lang.reflect.Method.invokeNative(Native Method)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at java.lang.reflect.Method.invoke(Method.java:511)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    09-05 02:25:32.849: E/AndroidRuntime(684):  at dalvik.system.NativeStart.main(Native Method)

ありがとう

4

1 に答える 1

1

スタック トレースと、場合によってはソースを投稿していただけますか? (私はこれをコメントにしますが、投稿時に50人の担当者はいません)

暗闇の中で突き刺す...電話getMenuInflater()するべきときに電話するかもしれませんgetSupportMenuInflater()

/編集

あなたのエラーを再現しようとした後、ActionBar の ActionButton テキストのスタイルを設定することは不可能に思えることに気付きました。Sherlock Library を使用しなくても。API 11 より前のものを実行しているデバイスでは、エラーはスローされませんでしたが、ボタンのスタイルも設定されていませんでした。

この回答が示唆するよう に、スタイリングを使用して静的xmlファイルを作成する必要がある場合があります。

于 2012-09-05T01:41:15.000 に答える