Aktionen hinzufügen und verarbeiten

Über die App-Leiste können Sie Schaltflächen für Nutzeraktionen hinzufügen. Mit dieser Funktion können Sie die wichtigsten Aktionen für den aktuellen Kontext oben in der App. Beispiel: Eine Foto-App zeigt möglicherweise Teilen und Erstellen Albumschaltflächen, wenn sich der Nutzer seine Fotos ansieht. Wann? Wenn sich der Nutzer ein einzelnes Foto ansieht, werden in der App möglicherweise Zuschneiden und Filter.

Der Platz in der App-Leiste ist begrenzt. Wenn eine App mehr Aktionen deklariert, als passen in der App-Leiste werden die unnötigen Aktionen an ein Dreipunkt-Menü gesendet. Die App kann auch festlegen, dass eine Aktion immer im Dreipunkt-Menü angezeigt wird, statt in der App-Leiste.

<ph type="x-smartling-placeholder">
</ph> Ein Bild, das Google Now in der Android-App zeigt, mit einem Aktionsleistensymbol <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Ein Aktionssymbol in „Now in Android“

Aktionsschaltflächen hinzufügen

Alle Aktionsschaltflächen und anderen Elemente, die im Aktionsüberlauf verfügbar sind, sind in einer XML-Datei definiert Speisekarte. Hinzufügen Aktionsleiste hinzu, erstellen Sie eine neue XML-Datei im res/menu/-Verzeichnis.

Hinzufügen eines <item> -Element für jedes Element, das Sie in die Aktionsleiste aufnehmen möchten, wie in den folgende Beispiel-XML-Datei für das Menü:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- "Mark Favorite", must appear as action button if possible. -->
    <item
        android:id="@+id/action_favorite"
        android:icon="@drawable/ic_favorite_black_48dp"
        android:title="@string/action_favorite"
        app:showAsAction="ifRoom"/>

    <!-- Settings, must always be in the overflow. -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

Das Attribut app:showAsAction gibt an, ob die Aktion als Schaltfläche in der App-Leiste angezeigt. Wenn Sie app:showAsAction="ifRoom", wie im Beispielcode Aktion Favorit: Die Aktion wird als Schaltfläche angezeigt, wenn in der Datei Platz ist. in der App-Leiste. Ist nicht genügend Platz vorhanden, werden überflüssige Aktionen an den Dreipunkt-Menü. Wenn Sie app:showAsAction="never" festlegen, wie im die Aktion settings des Beispielcodes aus. Die Aktion wird immer im Dreipunkt-Menü und wird nicht in der App-Leiste angezeigt.

Das System verwendet das Symbol der Aktion als Aktionsschaltfläche, wenn die Aktion angezeigt wird in der App-Leiste. Viele nützliche Symbole finden Sie Material-Symbole:

Auf Aktionen reagieren

Wenn der Nutzer eines der Elemente in der App-Leiste auswählt, ruft das System Ihre Aktivität onOptionsItemSelected() -Rückrufmethode und übergibt MenuItem-Objekt um anzuzeigen, auf welches Element getippt wurde. Bei der Implementierung von onOptionsItemSelected(), die Funktion MenuItem.getItemId() auf welches Element getippt wurde. Die zurückgegebene ID stimmt mit dem Wert überein, den Sie im entsprechenden <item>-Element deklarieren android:id-Attribut.

Beispielsweise prüft das folgende Code-Snippet, welche Aktion der Nutzer auswählt. Wenn die Methode die Aktion des Nutzers nicht erkennt, wird die Basisklasse aufgerufen. :

Kotlin

override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
    R.id.action_settings -> {
        // User chooses the "Settings" item. Show the app settings UI.
        true
    }

    R.id.action_favorite -> {
        // User chooses the "Favorite" action. Mark the current item as a
        // favorite.
        true
    }

    else -> {
        // The user's action isn't recognized.
        // Invoke the superclass to handle it.
        super.onOptionsItemSelected(item)
    }
}

Java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_settings:
            // User chooses the "Settings" item. Show the app settings UI.
            return true;

        case R.id.action_favorite:
            // User chooses the "Favorite" action. Mark the current item as a
            // favorite.
            return true;

        default:
            // The user's action isn't recognized.
            // Invoke the superclass to handle it.
            return super.onOptionsItemSelected(item);

    }
}