Warum wurde ActionBarActivity nicht mehr unterstützt?


121

Ich habe Android Studio neu installiert und mit dem Codieren einer zu erweiternden Aktivität begonnen. ActionBarActivityEs zeigte sich, dass diese veraltet war. Wie kann ich sonst eine Aktionsleiste für meine Aktivität einrichten? Auch das Training Erste Schritte verwendet das, ActionBarActivityohne darauf hinzuweisen, dass es veraltet ist.




16
Ab appcompat-v7-r21.1.0 hat sich die Logik etwas geändert und obendrein ActionBarActivityist dies jetzt der Fall AppCompatActivity. Aus Ihrer Sicht gibt es keinen Unterschied zwischen diesen beiden.
Eugen Pechanec

1
ActionBarActivity wurde entfernt, da die Support-Bibliothek 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Antworten:


120

ActionBar ist seit Toolbarseiner Einführung veraltet . Toolbarkann als "Obermenge" jeder Aktionsleiste angesehen werden. Das 'Alte' ActionBarist nun ein Beispiel für a Toolbar. Wenn Sie ähnliche Funktionen wünschen, jedoch ohne veraltete Warnungen, gehen Sie wie folgt vor:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
    toolbar.setTitle(R.string.app_name);
    setSupportActionBar(toolbar);
}

Sie müssen die Toolbarin Ihrem Layout XML definieren:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>

Mit dieser neuen Funktionalität können Sie Ihre eigenen benutzerdefinierten Funktionen erstellen ActionBarund Android das schwere Heben überlassen. Erstellen Sie einfach Ihre eigene benutzerdefinierte Ansicht, die sich von erstreckt Toolbar.


Außerdem sollten Sie AppCompatActivitystattdessen verwenden ActionBarActivity, dass es in der neuesten Version der Appcompat-Bibliothek eingeführt wurde. Vergessen Sie also nicht, gradle zu aktualisieren

compile 'com.android.support:appcompat-v7:22.1.1'

9
Ist es so einfach wie Auslagern extends ActionBarActivitymit extends AppCompatActivity?
Ehtesh Choudhury

9
Intern gibt es einige Änderungen, aber die Schnittstelle ist identisch. Also ja, es ist so einfach wie nur die Art der Aktivität zu ersetzen.
Endran

61
Es ist schade, dass der Android Studio-Assistent ActionBarActivity weiterhin erweitert und Ihnen dann mitteilt, dass es veraltet ist. Kommunizieren sie überhaupt intern bei Google?
Junge

Nicht die perfekte Lösung. Ihre Antwort für ActionBar nicht für ActionBarActivity. Ich werde mit @DroidMind Solution
Shabbir Dhangot

Großartig, wieder mehr Arbeit. Entspricht ihrem Design, um alle zur Verwendung von Fragmenten zu ermutigen. Die Designprinzipien von Google eignen sich hervorragend für Unternehmen, in denen 10 Personen an derselben App arbeiten.
Muz


6

Diese Antwort bietet eine einfache Möglichkeit, die Fehlermeldung zu beseitigen. Sie können als Ergänzung zu anderen sehen.

Wenn wir die Klassenelternaktivität ändern: ActionBarActivityauf AppCompatActivitydie Fehlermeldung verschwindet.

Sie können hier für weitere Informationen klicken .


1
Scheint dies jemand anderem etwas hinzuzufügen?
Noah Herron
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.