Übergeben Sie die Arraylist von benutzerdefinierten Objekten an Intent android

8

Ich versuche, eine Struktur von Arraylist zu einer Absicht wie folgt zu übergeben, In der aufrufenden Funktion verwende ich

%Vor%

Und in der aufgerufenen Funktion

%Vor%

Ich habe in beiden Klassen serialisierbare Tools angegeben, kann aber nicht mehr marshall .. run time error in der aufrufenden Funktion bei Startaktivität starten. Bitte helfen Sie weiter!

Edit 1: Stack-Trace:

%Vor%

Meine Parliament Klasse hat 5 Strings mit ihren Setter und Gettern!

    
bharath 01.04.2013, 16:56
quelle

3 Antworten

42
  

Ich habe in beiden Klassen serialisierbare Werkzeuge gegeben, bin aber   nicht in der Lage zu marshall .. Laufzeitfehler in der aufrufenden Funktion bei   Line Start Aktivität. Bitte helfen Sie weiter!

Da Sie Serializable verwenden, können Sie das jetzt nicht tun. Ich schlage vor, dass Sie Ihre ArrayList in eine Klasse umwandeln, zum Beispiel mit dem Namen DataWrapper . Diese Klasse muss auch Serializable implementieren und dann können Sie ArrayList über Intent übergeben.

Beispiel:

%Vor%

Und eine Verwendung:

%Vor%

und Abrufen:

%Vor%

Hinweis:

Sie können auch die Parcelable -Schnittstelle verwenden. Wenn Sie es verwenden, können Sie Ihre ArrayList mit diesen Methoden ablegen und abrufen:

%Vor%


Im Allgemeinen wird empfohlen, Parcelable-Schnittstelle zu verwenden, die direkt für die Übergabe von Objekten durch Aktivitäten bestimmt ist, aber ich benutze normalerweise Serializable-Schnittstelle und es macht immer einen Trick.

Seien Sie auch vorsichtig mit Tippfehlern. Sie setzen ein Objekt mit dem Schlüssel task , und Sie sollten es mit demselben Schlüssel und nicht mit der Taskliste abrufen.

    
Sajmon 01.04.2013 17:01
quelle
3

Die Implementierung von Serializable gilt als wenig performant, wenn Parcelable empfohlen wird.

Ich hatte genau die gleiche Frage und während ich mich immer noch mit der Parcelable beschäftigte, fand ich heraus, dass die statischen Variablen keine so schlechte Idee für die Aufgabe sind.

Sie können einfach ein

erstellen %Vor%

und benutze es von woanders über MyRefActivity.myObjects

Ich war mir nicht sicher, was öffentliche statische Variablen im Kontext einer Anwendung mit Aktivitäten implizieren. Wenn Sie auch Zweifel an diesem oder an Leistungsaspekten dieses Ansatzes haben, finden Sie unter:

Prost.

    
Orkun Ozen 02.02.2015 15:05
quelle
1

Machen Sie Ihre Objektklasse Parcelable später versuchen Sie

zu verwenden %Vor%     
Soniya Mohan 07.07.2015 06:58
quelle