2012-04-23 15 views
19

Ich habe versucht, eine Schaltfläche zur SherlockActionBar hinzufügen, aber ich kann es nicht funktionieren.Hinzufügen einer Schaltfläche zur ActionBar mit ActionBarSherlock

Dies ist der Code, den ich habe:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     android.view.MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, (android.view.Menu) menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

Das ist mein menu.xml Code:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/save_button" 
      android:title="i" 
      android:showAsAction="always" /> 
</menu> 

Dies funktioniert nicht, denn selbst wenn ich die Menütaste drücken, nichts erscheint . Gibt es einen anderen Weg? Mache ich einen Fehler?

Antwort

38

Du Android Menü und MenuInflater verwenden, sollte aber die Klassen verwenden, die mit ActionBarSherlock kommen:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.menu, (com.actionbarsherlock.view.Menu) menu); 
    return super.onCreateOptionsMenu(menu); 
} 

Es scheint, wie Sie die beiden gerade jetzt Verwirbelung. Stellen Sie sicher, dass Sie nur com.actionbarsherlock.view.Menu und com.actionbarsherlock.view.MenuInflater importieren und nicht die Android-Gegenstücke. Ich empfehle Ihnen, etwas wie das Folgende zu tun:

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 

... 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 
+0

das funktioniert fantastisch, aber, ist es möglich, die Schaltfläche über alle meine Aktivitäten und Fragmente in der Anwendung zu haben? – noloman

+0

Ja. Erstellen Sie eine Basisaktivität mit dem obigen onCreateOptionsMenu (...). Erweitern Sie als Nächstes diese Aktivität in den Aktivitäten, in denen die ActionBar sichtbar sein soll. – hanspeide

+0

Danke für die großartige Lösung !! – ASP

19

Ich denke, in der menu.xml. Ihr Artikel deklariert das Attribut "android: showAsAction" nicht vollständig. Sie müssen es so erklären:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/save_button" 
      android:title="i" 
      android:showAsAction="always|withText" /> 
</menu> 

Da Sie kein Symbol für das Element Aktionsleiste angegeben haben können keine Artikel angezeigt werden. Standardmäßig wird das Symbol als Text angezeigt.

Wenn dieser Beitrag Ihnen hilft, markieren Sie dies bitte als Antwort.

Danke.

+1

Danke! Exaclty war ich sah !! ps entfernen Leerzeichen ("immer | mitText") – Paschalis

+0

unter Verwendung der beiden akzeptierten Antwort (von hanspeide) und diese Antwort, bekam das Endergebnis eine Aktionsleiste mit einem Symbol darauf zu haben. Vielen Dank ! – Muzikant

Verwandte Themen