0

プロジェクトに ActionBarSherlock を実装しようとしています。メニュー/アクション項目をアクション バーに追加することは 2.1 では機能しますが、nexus4 では機能せず、4.0.3 エミュレーターでも機能しません。問題は、関数 onCreateOptionsMenu(Menu menu) がデバイスでは呼び出されず、2.1 で呼び出されるため、携帯電話のアクション バーにアクション アイテムが表示されないことです。

  1. プロジェクトにライブラリとして ActionBarSherlock を含めました。
  2. アプリケーションのマニフェスト ファイルに適切なテーマを設定しました。
  3. SherlockActivity でアクティビティ クラスを拡張しました。
  4. sherlock ライブラリから適切なクラスをオーバーライドしました (これまでのところ、そうでない場合、メニューは 2.1 のアクション バーにも表示されませんでした)。

以下は、テーマが設定されているマニフェストの一部です。

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock.Light.DarkActionBar" >

以下は menu.xml ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_item_call"
        android:showAsAction="always"
        android:title="Call"/>
    <item
        android:id="@+id/menu_item_share"
        android:showAsAction="always"
        android:title="Share"/>
    <item
        android:id="@+id/menu_item_save"
        android:showAsAction="always"
        android:title="Save"/>

</menu>

以下は、活動の関連部分です。

    //other imports
        import com.actionbarsherlock.app.SherlockActivity;
        import com.actionbarsherlock.view.Menu;
        import com.actionbarsherlock.view.MenuInflater;
        import com.actionbarsherlock.view.Window;

        public class SelectCategories extends SherlockActivity implements
                OnClickListener {


        //other code


        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
            MenuInflater inflater = getSupportMenuInflater();
            inflater.inflate(R.menu.menu, menu);
            return super.onCreateOptionsMenu(menu);
//return true; also has no effect
        }
        }

私はこの問題を解決しようとしてきましたが、数時間経ちましたが解決できませんでした。私を助けてください。前もって感謝します。

4

4 に答える 4

0

trueを返す必要があります。super.onCreateOptionsMenu(メニュー);の代わりに

于 2013-07-07T14:02:04.453 に答える
0

これらはonCreateにありましたか

private ActionBar mActionBar;
mActionBar = getSupportActionBar();
// mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
// mActionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

インポートする必要があります

import com.actionbarsherlock.app.ActionBar;

更新:アクションバー

オープン宣言

com.actionbarsherlock.app.ActionBar

アクティビティの上部にあるウィンドウ機能で、アクティビティのタイトル、ナビゲーション モード、その他のインタラクティブなアイテムを表示できます。

Android 3.0 (API レベル 11) 以降では、アクティビティがシステムの Holo テーマ (またはその子孫テーマの 1 つ) (デフォルト) を使用している場合、アクティビティのウィンドウの上部にアクション バーが表示されます。それ以外の場合は、requestFeature(FEATURE_ACTION_BAR) を呼び出すか、windowActionBar プロパティを使用してカスタム テーマで宣言することにより、アクション バーを追加できます。

デフォルトでは、アクション バーの左側にアプリケーション アイコンが表示され、その後にアクティビティ タイトルが表示されます。アクティビティにオプション メニューがある場合は、アクション バーから「アクション アイテム」として選択項目に直接アクセスできるようにすることができます。アクション バーのさまざまな特性を変更したり、完全に削除したりすることもできます。

アクティビティから、getActionBar() を呼び出して ActionBar のインスタンスを取得できます。

場合によっては、android.view.ActionMode. たとえば、ユーザーがアクティビティで 1 つ以上のアイテムを選択すると、アクション バーを一時的に置き換える UI を使用して、選択したアイテムに固有のアクションを提供するアクション モードを有効にすることができます。UI は同じスペースを占める場合がありますが、android.view.ActionMode API は ActionBar の API とは異なり、独立しています。

開発者ガイド アクション アイテムやナビゲーション モードなどの追加方法など、アクション バーの使用方法については、アクション バー開発者ガイドを参照してください。

于 2013-07-08T02:31:05.220 に答える