2013-07-02 12 views
24

ich einen Knopf auf der Aktionsleiste auf der rechten Seite des Beispiels, wie in diesem Screenshot hinzufügen möchten:Wie man Knopf in ActionBar (Android) hinzufügt?

a screenshot of an actionbar with no buttons. the title is 'Example'

I ActionBar erhalten in onCreate Methode wie:

ActionBar actionBar = getActionBar(); 
actionBar.setDisplayHomeAsUpEnabled(true); 

und Zurück-Taste (onOptionsItemSelected-Methode) wie folgt:

public boolean onOptionsItemSelected(MenuItem item){ 
    Intent myIntent = new Intent(getApplicationContext(),MainActivity.class); 
    startActivityForResult(myIntent, 0); 
    return true; 
} 

Wie kann ich Button hinzufügen?

Antwort

72

müssen Sie onCreateOptionsMenu einen Eintrag innerhalb res/menu, Überschreibung erstellen und aufblasen

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

ein Eintrag für das Menü sein könnte:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/action_cart" 
     android:icon="@drawable/cart" 
     android:orderInCategory="100" 
     android:showAsAction="always"/> 
</menu> 
+0

Ok.That works.But i Verwendung von orderInCategory und sein Wert nicht verstehen, wie 100. – Ponting

+0

Es ist eine ganze Zahl, die die Reihenfolge von „Bedeutung“ des vertreten Artikel innerhalb einer Gruppe. Du kannst es ändern. Solange du ein oder zwei Elemente im Menü hast, macht das keinen Unterschied. Sie können darüber [hier] lesen (http://developer.android.com/guide/topics/resources/menu-resource.html) – Blackbelt

+0

Vielen Dank. Nun eine andere Frage ist, dass ich dieses Menü in einer anderen Aktivität hinzufügen, aber anders zeigen Knopf statt dessen. Wie kann ich das tun? – Ponting

14

Eine Aktivität, die ActionBar in seiner onCreateOptionsMenu() Methode auffüllt.

Statt setcustomview() die Verwendung nur onCreateOptionsMenu wie dies außer Kraft setzen:

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

Wenn ein Aktion im ActionBar ausgewählt wird, wird die onOptionsItemSelected() Methode aufgerufen. Er empfängt die ausgewählte Aktion als Parameter. Basierend auf diesen Informationen können Sie entscheiden, was Sie zum Beispiel tun können:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menuitem1: 
     Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT).show(); 
     break; 
    case R.id.menuitem2: 
     Toast.makeText(this, "Menu item 2 selected", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
    return true; 
} 
0

Dank @Blackbelt! Die neue Methode Signatur für das Menü aufbläst, ist dies:

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.my_meny, menu); 
} 
Verwandte Themen