web-dev-qa-db-de.com

Wie füge ich den Button in ActionBar (Android) hinzu?

Ich möchte der Aktionsleiste auf der rechten Seite von Example einen Button hinzufügen, wie in diesem Screenshot: 

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

Ich bekomme actionBar in der onCreate-Methode als:

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

und zurück (OnOptionsItemSelected-Methode) wie folgt: 

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

Wie kann ich eine Schaltfläche hinzufügen?

26
Ponting

sie müssen einen Eintrag in res/menu,override onCreateOptionsMenu erstellen und diesen aufblasen

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

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

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

Eine Aktivität füllt die ActionBar in ihrer onCreateOptionsMenu()-Methode.

Statt setcustomview() zu verwenden, überschreiben Sie einfach onCreateOptionsMenu wie folgt: 

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

Wenn eine Aktion in der Aktionsleiste ausgewählt ist, wird die onOptionsItemSelected()-Methode aufgerufen. Sie erhält die ausgewählte Aktion als Parameter. Anhand dieser Informationen kann der Code beispielsweise entscheiden, was zu tun ist:

@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;
}
16
Google

Danke an @Blackbelt! Die neue Methodensignatur zum Aufblasen des Menüs lautet:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.my_meny, menu);
}
0
Ivo Stoyanov