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.

Degreat Yartey
quelle
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'
Endran
quelle
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
67

Hier ist die Antwort aus dem Beitrag im Android-Entwickler-Blog :

"ActionBarActivity wurde zugunsten der neuen AppCompatActivity abgelehnt. "

Dort können Sie mehr darüber lesen.

nvinayshetty
quelle
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 .

Wentao Ma
quelle
1
Scheint dies jemand anderem etwas hinzuzufügen?
Noah Herron