2013-07-28 11 views
24

Ich habe einen sehr einfachen Code, aber ein Problem, das ich selbst nach langem Google-Suchen nicht lösen kann. Ich möchte Action-Elemente in meiner ActionBar haben, aber wenn ich die App starte, sehe ich nur eine ActionBar mit dem App-Logo und dem Titel , aber keine Action Items.ActionBar Action Items werden nicht angezeigt

Es wäre toll, wenn ihr mir helfen könntet, wahrscheinlich bin ich dabei nur die offensichtlichste Sache;)

Das ist die Methode in meinem 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); 
} 

Und dies ist das relevant. xML-Datei für die ActionBar (benannt 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

Der Code scheint korrekt. Aber was ist dein minTargetSdk deklariert in deiner Manifest-Datei, und was ist die Version von Android, wo Sie die App testen? – lory105

Antwort

70

Dies, weil, wenn Sie die Unterstützung AppCompat ActionBar Bibliothek und ActionBarActivity verwenden Sie Ihre Menüs in einem anderen erstellen sollte als Die Standardmethode zum Erstellen von XML-Menüs in ActioBarSherlock oder der Standard-ActionBar.

versuchen also diesen Code:

<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> 

und melden, wenn diese

Hinweis funktioniert: Überprüfen Sie die zusätzlichen Präfix xmlns: App, die stattdessen verwendet werden sollte!

GL

+5

so zu klären, "app" wird 3 mal verwendet: im Menü und einmal in jedem Element. Musste ein diff anwenden, um das zu fangen :-) –

+0

warum funktioniert das? – WantIt

+1

es hat mit der Verwendung der app compat-Bibliothek zu tun, so dass Sie dies mit älteren Versionen von Android verwenden können. Wenn Sie eine neue Version targetieren, müssen Sie dies nicht tun. und setze dein api min höher. – reidisaki

0

Versuchen Sie folgendes:

@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

nein, es funktioniert nicht so. –

+0

Ich bin neugierig, ich benutze immer diesen Rückruf auf diese Weise und hatte nie ein Problem. Aus diesem Grund würde ich gerne wissen, was ist Ihr gesamtes Setup, wie MinSDK und wenn Sie die Support-Bibliothek verwenden oder nicht? –

1

Hier gehen Sie, müssen Sie das Menü in Ihrem XML wie folgt hinzuzufügen:

<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

dies funktioniert nicht, die Aktionselemente werden immer noch nicht angezeigt. –

6

Kann sicher, dass Sie nicht eine Art verwenden, die Ihre Action Items Rendering ist unsichtbar.

Wenn Sie zum Beispiel "android: Theme.Holo.Light.DarkActionBar" verwenden, erhalten Sie eine schwarze Aktionsleiste, so dass Sie Ihre schwarzen Gegenstände nicht sehen können.

Wechseln Sie zu "android: Theme.Holo.Light" und sie werden angezeigt.

Suchen Sie in der Datei (zum Beispiel) Res/Werte-v14/styles.xml

Verwandte Themen