android.support.v7.app.AppCompatActivity
wurde gestern als neue Funktion in die neueste v7-Supportbibliothek aufgenommen.
Es wird gesagt, dass ActionBarActivity
dies zugunsten des neuen veraltet ist AppCompatActivity
und dass dies AppCompatActivity
die Basisklasse für Aktivitäten ist, die die Funktionen der Aktionsleiste der Unterstützungsbibliothek verwenden. Also, was sind die neuen Funktionen von AppCompatActivity
over ActionBarActivity
? Welche Verbesserungen AppCompatActivity
haben vorbei ActionBarActivity
? Und was sind die Vorteile von AppCompatActivity
? Könnte jemand ein paar Proben liefern?
Irgendwelche Tipps sind willkommen. Und danke im Voraus.
PS: Was mir am meisten erstaunte , ist , dass AppCompatActivity
die erweitert wird aus android.support.v4.app.FragmentActivity
ist die direkte Mutterklasse ActionBarActivity
! Ich meine eigentlich jetzt, dass ActionBarActivity
alles kann, was AppCompatActivity
kann, warum hat Android letzteres herausgeschoben?
In der Zwischenzeit habe ich einen Blog-Beitrag gesehen, in dem es heißt: " Es ist keine Umbenennung von ActionBarActivity
nach AppCompatActivity
, die interne Logik von AppCompat
ist über verfügbar. AlsoAppCompatDelegate
, was ist die" interne Logik "von AppCompat
? Was kann AppCompatDelegate
ich tun? Könnte jemand ein paar Codes dazu posten?
Antworten:
Wie Chris schrieb, ist die neue veraltete Version von
ActionBarActivity
(der einen erweitertenAppCompatActivity
Klasse) eine sichere Abwärtskompatibilitätsklasse. Die Ablehnung ist nur ein Hinweis für Sie, wenn SieAppCompatActivity
stattdessen direkt new verwenden möchten.AppCompatActivity
ist eine neue, allgemeinere Implementierung, die dieAppCompatDelegate
Klasse intern verwendet.Wenn Sie eine neue Entwicklung starten, sollten Sie lieber sofort eine neue
AppCompatActivity
Klasse verwenden. Wenn Sie die Möglichkeit haben, Ihre App zu aktualisieren, ersetzen Sie sie auchActionBarActivity
durch die neue Aktivität. Andernfalls können Sie bei veralteten Aktivitäten bleiben und es wird überhaupt keinen Unterschied im Verhalten geben.In Bezug auf
AppCompatDelegate
es ermöglicht es Ihnen, neue getönte Widgets in einer Aktivität zu haben, die wederAppCompatActivity
noch istActionBarActivity
.Beispielsweise erben Sie eine Aktivität von einer externen Bibliothek, die wiederum nicht von
AppCompatActivity
dieser Aktivität erbt, aber Sie möchten, dass diese Aktivität getönte Material-Widgets (Ansichten) enthält. Um es passieren , müssen Sie eine Instanz schaffen ,AppCompatDelegate
in Ihrer Aktivität, Überschreibung Methoden dieser Tätigkeit wieaddContentView()
,setContentView()
usw. (sieheAppCompatDelegate
javadoc für die vollständige Liste der Methoden), und innerhalb dieser überschriebenen Methoden leiten die Anrufe an die innereAppCompatDelegate
Instanz.AppCompatDelegate
wird den Rest erledigen und Ihre "altmodische" Aktivität wird "materialisiert".quelle
Es ist meistens eine Namensänderung:
ActionBarActivity
Beschreibt nicht wirklich alles, was es jetzt tut. Sie können sicher verwenden,ActionBarActivity
wenn Sie möchten. Stellen Sie es sich wie einen Symlink vor.quelle
AppCompatActivity
Ist die direkte Elternklasse vonActionBarActivity
, die jetztActionBarActivity
alles kann, wasAppCompatActivity
kann, warumAndroid
die spätere rausgeschoben?ActionBarActivity
wann es aus der Support-Bibliothek entfernt wird (z. B. beim Aktualisieren Ihrer App), würde ich empfehlen, es von nun an nicht mehr zu verwenden.http://android-developers.blogspot.it/2015/04/android-support-library-221.html
quelle
AppCompatActivity
wurde in Android-SDK seit der Veröffentlichung der Android Support Appcompat Bibliothek eingeführt .AppCompatActivity
ist die direkte untergeordnete Klasse vonFragmentActivity
support v4 und die direkte übergeordnete Klasse von supportActionBarActivity
.AppCompatActivity
ist die Basisklasse für Aktivitäten, die die Aktionsleistenfunktionen der Unterstützungsbibliothek verwenden .Sie können
ActionBar
Ihrer Aktivität eine hinzufügen , wenn Sie auf API-Ebene 7 oder höher ausgeführt werden, indem Sie diese Klasse für Ihre Aktivität erweitern und das Aktivitätsthema auf Theme.AppCompat oder ein ähnliches Thema festlegen .Die Support v7-Appcompat-Bibliothek bietet Unterstützung für das Entwurfsmuster der Benutzeroberfläche der Aktionsleiste . Diese Bibliothek enthält Unterstützung für Implementierungen von Benutzeroberflächen für das Materialdesign .
Hier sind einige der Schlüsselklassen, die in der v7-Appcompat-Bibliothek enthalten sind:
ActionBar
- Bietet eine Implementierung des Benutzeroberflächenmusters der Aktionsleiste.AppCompatActivity
- Fügt eine Anwendungsaktivitätsklasse hinzu, die als Basisklasse für Aktivitäten verwendet werden kann, die die Aktionsleistenimplementierung der Unterstützungsbibliothek verwenden .AppCompatDialog
- Fügt eine Dialogklasse hinzu , die als Basisklasse für AppCompat- Dialogfelder verwendet werden kann .ShareActionProvider
- Fügt Unterstützung für eine standardisierte Freigabeaktion (z. B. E-Mail oder Veröffentlichung in sozialen Anwendungen) hinzu, die in eine Aktionsleiste aufgenommen werden kann.Nachdem Sie die Android-Unterstützungsbibliotheken heruntergeladen haben , befindet sich diese Bibliothek im Verzeichnis / extras / android / support / v7 / appcompat / .
quelle
android.support.v4.app.ActivityCompat
? Ist das nur der alte Name vonAppCompatActivity
?Bisher war der einzige Einstiegspunkt
AppCompat
die jetzt veralteteActionBarActivity
Klasse. Leider haben Sie dadurch gezwungen, eine festgelegte Aktivitätshierarchie zu verwenden, die Dinge wie die VerwendungPreferenceActivity
unmöglich machte.Weitere Informationen finden Sie in den Support-Bibliotheken von Chris Banes, Version 22-1-0
quelle
Die neueste Version der Android-Unterstützungsbibliothek, 22.1, lehnt die
ActionBarActivity
Vorteile abAppCompatActivity
, die verspricht, eine einheitliche KonsistenzActionBar
für alle Geräte ab API Level 7 und höher zu erzielenquelle