2013-07-28 14 views
24

私は非常に単純なコードを持っていますが、長いGoogle検索を行っても解決できない問題があります。私はActionBarにいくつかのAction Itemを持っていますが、Appを実行するたびにApp LogoとタイトルがのActionBarが表示されますが、アクションアイテムはではありません。ActionBarアクション項目が表示されない

あなたは私を助けることができればそれはおそらく、私はちょうど最も明白なことをしないのです、素晴らしいことだ;)

私ActionBarActivityにおける方法ザッツ:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

そして、これが関連しています。アクションバーのXMLファイル(名前はmain_activity_actions.xml):

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     android:title="@string/action_search" 
     android:showAsAction="always" /> 
<item android:id="@+id/action_compose" 
     android:icon="@drawable/ic_action_compose" 
     android:title="@string/action_compose" 
     android:showAsAction="always"/> 
</menu> 
+0

コードが正しく表示されます。しかし、マニフェストファイルでminTargetSdkが宣言されていますが、アプリケーションをテストするアンドロイドのバージョンは何ですか? – lory105

答えて

70

あなたがサポートAPPCOMPATアクションバーのライブラリとActionBarActivityを使用する場合はよりも異なるであなたのメニューを作成する必要がありますので、これがありますActioBarSherlockまたはデフォルトのActionBarでXMLメニューを作成する標準的な方法。

ので、このコードを試してみてください。

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
     <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      app:showAsAction="always" /> 
     <item android:id="@+id/action_compose" 
      android:icon="@drawable/ic_action_compose" 
      android:title="@string/action_compose" 
      app:showAsAction="always"/> 
</menu> 

と、これは

注動作するかどうか報告:余分な接頭辞のxmlnsを確認してください。代わりに使用してくださいアプリを!

GL

+5

明確にするため、「app」はメニューで3回、各項目で1回使用されます。それをキャッチするdiffを適用しなければならなかった: –

+0

これはなぜ機能するのですか? – WantIt

+1

これは、アプリケーション互換ライブラリを使用することと関係がありますので、古いバージョンのAndroidでこれを使用することができます。新しいバージョンをターゲットにしている場合は、これを行う必要はありません。あなたのapiをより高く設定してください。 – reidisaki

0

はこれを試してみてください:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions, menu); 
    return true; 
} 
+1

いいえ、それはそのようには動作しません。 –

+0

私は不思議です、私はいつもこのコールバックをこの方法で使用しており、問題は一度もありませんでした。だから、私はminSDKのようなあなたの全体的なセットアップは何ですか、あなたがサポートライブラリを使用しているかどうかを知りたいのですが? –

1

はここに行く、あなたはこのようなあなたのxmlのメニューを追加する必要があります。

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/menu_settings" 
     android:orderInCategory="0" 
     android:showAsAction="always" 
     android:icon="@drawable/menu"> 
    <menu> 
     <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      android:showAsAction="always" /> 
     <item android:id="@+id/action_compose" 
      android:icon="@drawable/ic_action_compose" 
      android:title="@string/action_compose" 
      android:showAsAction="always"/> 
     </menu> 
    </item> 
</menu> 
+0

これは動作しませんが、アクション項目は表示されません。 –

6

あなたは目に見えないあなたのアクションアイテムをレンダリングされたスタイルを使用していないことを確認してください可能性があります。

たとえば、「android:Theme.Holo.Light.DarkActionBar」を使用している場合、黒のアクションバーが表示され、黒いアイテムは表示されません。

「android:Theme.Holo.Light」に切り替えて表示されます。

res/values-v14/styles.xmlファイルを参照してください

関連する問題