So wechseln Sie mit Android Parcelable zwischen Aktivitäten zwischen Aktivitäten

Einführung

Wir müssen häufig Daten zwischen den Aktivitäten einer Android-Anwendung übertragen. Eine einfache Möglichkeit, dies zu tun, ist die Verwendung Intent.putExtra()Wenn Sie jedoch viele strukturierte Daten übergeben müssen, ist Parcelable möglicherweise die bessere Lösung. In diesem Artikel werde ich Ihnen zeigen, wie Parcelable es einfach macht, Klassen für die gemeinsame Nutzung zwischen Aktivitäten zu serialisieren.

Warum paketierbar?

Parcelable ist eine reine Android-Oberfläche. Entwickler können damit eine Klasse serialisieren, sodass ihre Eigenschaften problemlos von einer Aktivität in eine andere übertragen werden können. Dies erfolgt durch Lesen und Schreiben von Objekten aus Paketen, die abgeflachte Daten in Nachrichtencontainern enthalten können.

Erstellung der Hauptaktivität und des Layouts

Unsere Haupttätigkeit wird sich um das Sammeln der Details des Buches kümmern. Beginnen wir mit der Konfiguration unserer onCreate Methode.

Dann öffnen activity_main.xml um das Layout und das Erscheinungsbild der Ansicht zu konfigurieren. Sie benötigen zwei Texteingabefelder und eine Schaltfläche zum Einreichen.

Es sollte so aussehen:

Öffnen Sie nun Ihre Hauptaktivität und verknüpfen Sie die Anzeigefelder mit Ihrer Aktivität. Sie müssen dies in Ihrem tun onCreate() Methode wie folgt:

Beenden MainActivitymüssen Sie a konfigurieren onClickListener. Dies wird immer dann aufgerufen, wenn die einreichen Die Taste wird gedrückt. In diesem Fall sollten die eingegebenen Daten gesammelt und an die nächste Aktivität gesendet werden.

Hier fügen Sie eine hinzu onClickListener zum Button Instanz, die Sie aus Ihrem Aktivitätslayout abgerufen haben. Dieser Code wird immer dann ausgeführt, wenn der einreichen Schaltfläche wird angeklickt.

Beachten Sie, dass wir einfach die übergeben Book Instanz bei putExtra(). Wie wir später sehen werden, kümmert sich Parcelable darum, die Daten aus dem Buch in eine Zeichenfolge zu serialisieren, damit sie absichtlich weitergegeben werden können.

Jetzt, da die Hauptaktivität erledigt ist, müssen wir unsere erstellen BookActivity sowie die Buchklasse, um Informationen über das Buch zu enthalten.

Erstellen Sie die Buchklasse

Lassen Sie uns eine erstellen Book Klasse, um Informationen zu jedem Buch zu enthalten.

Diese Klasse muss implementiert werden Parcelable. Dies ermöglicht die Weitergabe von Daten aus MainActivity beim BookActivity.

Wir werden auch einige Standard-Getter-Funktionen und einen Konstruktor hinzufügen, um schnell eine Instanz der Klasse zu erstellen.

Schreiben Sie in das Paket

das writeToParcel Bei dieser Methode fügen Sie dem Paket alle Ihre Klassendaten hinzu. Dies erfolgt zur Vorbereitung der Übertragung. Diese Methode erhält eine Paketinstanz mit einer Reihe von Schreibmethoden, mit denen Sie jedes Feld zum Paket hinzufügen können. Bitte beachten Sie: Die Reihenfolge, in der Sie die Daten schreiben, ist wichtig!

Hier erfahren Sie, wie es geht.

Paketdaten lesen

So wie die Schreibmethode das Schreiben der zu übertragenden Daten verwaltet, wird der Konstruktor verwendet, um die aus dem serialisierten Paket übertragenen Daten zu lesen. Diese Methode wird bei der Empfangsaktivität aufgerufen, um die Daten zu erfassen.

So sollte es aussehen:

Die empfangende Aktivität empfängt die Daten als Zeichenfolge und ruft dann die auf getParcelableExtra Methode zum Starten des Datenerfassungsprozesses. Dies löst den oben definierten Konstruktor aus, der die Daten deserialisiert und einen neuen erstellt Book Beispiel.

Colisable.Creator

Um Ihre Paketklasse abzuschließen, müssen Sie eine erstellen Parcelable.Creator Instanz und weisen Sie es zu CREATOR Feld. Die Parcelable-API sucht nach diesem Feld, wenn eine Instanz Ihrer Klasse deserialisiert werden muss, die an eine andere Komponente übergeben wurde.

Es bindet alles zusammen. Die Aufgabe ist einfach: Sie generiert Instanzen Ihrer Parcelable-Klasse aus a Parcel unter Verwendung der bereitgestellten Paketdaten. Der Ersteller ruft den oben definierten Konstruktor auf und übergibt ihm a Parcel Objekt und der Konstruktor initialisieren die Klassenattribute.

Wenn Ihre Parcelable-Klasse untergeordnete Klassen hat, müssen Sie mit der sehr vorsichtig sein describeContents() Methode. Auf diese Weise können Sie die spezifische untergeordnete Klasse identifizieren, die von der erstellt werden muss Parcelable.Creator. Sie können Erfahren Sie mehr über die Funktionsweise von Stack Overflow.

Buchaktivität und Layout

Wir können unsere Bewerbung jetzt mit dem Aufgabenheft vervollständigen. Erstellen Sie eine neue leere Aktivität mit dem Namen BookActivity. Lassen Sie das Layout so aussehen, wie ich es unten habe.

in dem activity_book.xmldu brauchst nur zwei TextView Widgets, mit denen der Titel und der Autor der Bücher angezeigt werden.

Lassen Sie uns jetzt unser Geschäft aufbauen. Ihre Aktivität sollte bereits so aussehen:

In dieser Aktivität möchten Sie die von Ihrer Hauptaktivität übertragenen Daten empfangen und in Ihren Ansichten anzeigen. So werden Sie die Instanzen Ihrer wiederherstellen TextView unter Verwendung der Kennung des TextView in Ihrem Layout definiert.

Dann werden Sie natürlich anrufen getIntent() weil Sie in dieser Aktivität Daten wiederherstellen. Die Daten, die Sie wiederherstellen, werden mithilfe von aus der Buchklasse erfasst getParcelableExtra(). Dann setzen Sie die Werte von TextViews zu den Daten, die Sie gesammelt haben. Hier erfahren Sie, wie es geht.

Erstellen Sie Ihre App und starten Sie sie. Sie sollten die kleine Schönheit sehen, die Sie gerade erstellt haben.

Fazit

In diesem Artikel haben Sie gesehen, wie Sie Objekte einfach von einer Aktivität in eine andere verschieben können. Sie müssen nicht mehr jedes Datenfeld, das Sie an das Intent-Objekt übergeben haben, separat abrufen, und Sie müssen sich nicht mehr an den Namen erinnern, unter dem Sie jedes Feld übergeben haben. Darüber hinaus ist dieser Prozess schneller als die Serialisierungsfunktion von Java.

In diesem Lernprogramm haben Sie gelernt, wie Sie mit Parcelable Daten von einer Aktivität an eine andere übergeben. Sie können tiefer in Parcelable eintauchen, indem Sie das Kontrollkästchen aktivieren offizielle Dokumentation.

In der Zwischenzeit lesen Sie einige unserer anderen Artikel zur Entwicklung von Android-Apps!

Moyens Staff
Moyens I/O-Personal. motivierte Sie und gab Ratschläge zu Technologie, persönlicher Entwicklung, Lebensstil und Strategien, die Ihnen helfen werden.