156

android.support.v7.app.AppCompatActivity wurde gestern als neues Feature in die neueste v7-Supportbibliothek aufgenommen.Was ist die Verbesserung von AppCompatActivity gegenüber ActionBarActivity?

Es wird gesagt, dass ActionBarActivity hat sich für die neue AppCompatActivity und dass AppCompatActivity ist Basisklasse für Aktivitäten, die die Support-Bibliothek Aktionsleiste Funktionen nutzen veraltet. Also, was sind neue Funktionen von AppCompatActivity über ActionBarActivity? Welche Erweiterungen haben AppCompatActivity über ActionBarActivity? Und was sind die Vorteile von AppCompatActivity? Könnte jemand ein paar Proben liefern?

Irgendwelche Tipps werden geschätzt. Und danke im Voraus.

PS: Was mich am meisten überraschte ist, dass AppCompatActivity, die von android.support.v4.app.FragmentActivity erweitert wird, die direkte Elternklasse von ActionBarActivity ist! Ich meine jetzt, dass ActionBarActivity alles tun kann, was AppCompatActivity tun kann, warum hat Android letzteres verdrängt?

Inzwischen habe ich eine Blog-Post, die besagt: „Es ist kein Umbenennungs von ActionBarActivity zu AppCompatActivity, die internen Logik der AppCompat über AppCompatDelegate verfügbar ist“, so etwas ist die „interne Logik“ von AppCompat? Was kann AppCompatDelegate tun? Könnte jemand einige Codes dazu schreiben?

+0

http://android-developers.blogspot.com/2015/04/android-support-library-221.html – CommonsWare

+0

ich es gelesen habe, ist es eine Einführung, zu flach. – SilentKnight

+1

AppCompatActivity ist die übergeordnete Klasse von ActionBarActivity. Und für mehr Idee müssen Sie in Code schauen. –

Antwort

139

Als Chris, neu geschrieben zu bringen verspricht veraltet Version ActionBarActivity (die eine Erweiterung AppCompatActivity Klasse) ist eine sichere Rückwärtskompatibilität Klasse zu verwenden. Seine Vernachlässigung ist nur ein Hinweis darauf, dass Sie stattdessen direkt AppCompatActivity verwenden möchten. AppCompatActivity ist eine neue, allgemeinere Implementierung, die intern die Klasse AppCompatDelegate verwendet. Wenn Sie eine Neuentwicklung beginnen, sollten Sie lieber sofort die neue AppCompatActivity Klasse verwenden Wenn Sie die Möglichkeit haben, Ihre App zu aktualisieren, ersetzen Sie die veraltete Version ActionBarActivity durch die neue Aktivität. Andernfalls können Sie bei veralteten Aktivitäten bleiben und es wird überhaupt kein Unterschied im Verhalten geben.

AppCompatDelegate In Bezug ermöglicht es Ihnen, neue getönte Widgets in einer Aktivität zu haben, die weder AppCompatActivity noch ActionBarActivity ist.

Zum Beispiel erben Sie eine Aktivität aus einer externen Bibliothek, die wiederum tut nicht vererben AppCompatActivity aber Sie wollen, dass diese Aktivität getönte Materialien Widgets (Ansichten) haben. Um dies zu ermöglichen, müssen Sie eine Instanz AppCompatDelegate innerhalb Ihrer Aktivität erstellen, Methoden dieser Aktivität wie addContentView(), setContentView() usw. überschreiben (siehe AppCompatDelegate javadoc für die vollständige Liste der Methoden), und innerhalb dieser überschrieben Methoden die Aufrufe an die innere AppCompatDelegate Instanz. AppCompatDelegate erledigt den Rest und Ihre "altmodische" Aktivität wird "materialisiert".

+0

Gutes Beispiel .. Danke @ sergej shafarenka –

+2

Kannst du mir bitte sagen, was passiert, wenn ich Aktivität anstelle von Appcompactivity verwenden werde? Ich habe gesucht, aber nicht die Lösung bekommen.Bitte helfen Sie mir –

7

Zuvor war der einzige Einstiegspunkt in AppCompat durch die jetzt veraltete ActionBarActivity Klasse. Leider hat Sie das dazu gezwungen, eine festgelegte Aktivitätshierarchie zu verwenden, die Dinge wie die Verwendung von PreferenceActivity unmöglich machte.

sehen chris banes des support-libraries-v22-1-0 für weitere Informationen

+1

Es ist Chris Blog, sehr geschätzt. – SilentKnight

34

Es ist vor allem eine Namensänderung: ActionBarActivity nicht wirklich alles beschreiben sie es jetzt tut. Sie können sicher ActionBarActivity verwenden, wenn Sie möchten. Stellen Sie sich das wie einen Symlink vor.

+0

'AppCompatActivity' ist die direkte Elternklasse von 'ActionBarActivity', jetzt da' ActionBarActivity' alles kann, was 'AppCompatActivity' kann, warum' Android' das später ausschaltet? – SilentKnight

+4

@SilentKnight: Wie Chris schrieb, ist es hauptsächlich eine Namensänderung. Zitieren [der Android-Entwickler Blog] (http://android-developers.blogspot.com/2015/04/android-support-library-221.html): "Die AppCompat Support Library begann mit bescheidenen, aber wichtigen Anfängen: eine einzige konsistente Aktionsleiste für alle Geräte der API 7 und höher In Revision 21 wurde eine neue Verantwortung übernommen: die Materialfarbpalette, die Widget-Abtönung, die Toolbar-Unterstützung und mehr für alle API 7+ -Geräte, was der Name ActionBarActivity nicht tat wirklich den vollen Umfang dessen abdecken, was es wirklich getan hat. " – CommonsWare

+3

Es ist ** nicht sicher ** veraltete Klassen zu verwenden, da sie in zukünftigen Versionen entfernt werden können. Obwohl Sie alle Verweise auf "ActionBarActivity" leicht ersetzen können, wenn sie aus der Support-Bibliothek gelöscht werden (z. B. beim Aktualisieren Ihrer App), würde ich empfehlen, sie von nun an nicht mehr zu verwenden. –

2

Die neueste Version von Android-Support-Bibliothek, 22.1, die ActionBarActivity für AppCompatActivity deprecates, die ein einziges konsistentes ActionBar für alle Geräte, beginnend mit API-Ebene 7 und höher

8

AppCompatActivity wurde eingeführt in Android-SDK seit der Veröffentlichung von android Unterstützung appcompat Bibliothek.

AppCompatActivity ist die direkte Kindklasse von FragmentActivity von Support v4 und die direkte Elternklasse von ActionBarActivity.

AppCompatActivity ist die Basisklasse für Aktivitäten, die die Unterstützung Bibliothek Aktionsleiste Funktionen verwenden.

Sie können eine ActionBar auf Ihre Aktivität hinzufügen, wenn auf API-Level 7 oder höher läuft durch diese Klasse für Ihre Tätigkeit erstreckt, und die Aktivität Thema Theme.AppCompat oder ein ähnliches Thema zu setzen.

Wie für die Unterstützung v7 AppCompat Bibliothek, fügt es Unterstützung für die Aktionsleiste User Interface Design-Muster. Diese Bibliothek enthält Unterstützung für Materialdesign Benutzeroberflächenimplementierungen.

sind hier einige der wichtigsten Klassen in der v7 enthalten AppCompat Bibliothek:

  • ActionBar - eine Implementierung der Benutzer Interface-Pattern Aktionsleiste zur Verfügung stellt.
  • AppCompatActivity - Fügt eine Anwendung Aktivitätsklasse, die verwendet als Basisklasse für Aktivitäten, die die Bibliothek Unterstützung Aktionsleiste Implementierung verwenden werden können.
  • AppCompatDialog - Fügt eine Dialogklasse hinzu, die als Basis Klasse für AppCompat Themen-Dialoge verwendet werden kann.
  • ShareActionProvider - Fügt Unterstützung für eine standardisierte Freigabeaktion hinzu (z. B. E-Mail oder Veröffentlichung in sozialen Anwendungen), die in einer Aktionsleiste enthalten sein kann.

Nachdem Sie die Android Support-Bibliotheken herunterladen, wird diese Bibliothek befindet sich in der /Extras/android/support/v7/appcompat/ Verzeichnis.

+0

Was ist mit 'android.support.v4.app.ActivityCompat'? Ist das nur der alte Name von 'AppCompatActivity'? – Taylan

11

Die AppCompat-Supportbibliothek begann mit bescheidenen, aber wichtigen Anfängen: eine einzige konsistente Aktionsleiste für alle API 7-Geräte und höher.In Revision 21, , hat es neue Verantwortung übernommen:: bringt Material-Farbpalette, Widget-Färbung, Toolbar-Unterstützung und mehr auf alle API 7+ Geräte. der Name ActionBarActivity hat nicht wirklich den vollen Umfang dessen abgedeckt, was er wirklich tat.

http://android-developers.blogspot.it/2015/04/android-support-library-221.html

+0

..Kannst du mir bitte sagen, was passiert, wenn ich Aktivität anstelle von Appcompactivity verwenden werde? Ich habe gesucht, aber habe die Lösung nicht bekommen. Bitte helfen Sie mir –

Verwandte Themen