2016-05-08 4 views
1

Um mein neues Fragment zu initialisieren, muss ich ein Objekt als parzellierbares Objekt senden. Dies sind die Felder, die es enthält:Android Parcelable mit JsonObject

private String sessionId; 
private String status; 
private JSONObject typeAttributes; 
private JSONObject kindAttributes; 

Das Problem ist, dass JSONObject nicht parcel ist. Wenn ich nur die writeValue-Methode in der writeToParcel-Methode verwende, bekomme ich einen inakzeptablen Klassenfehler. Darüber hinaus ist JSONObject nicht einmal serialisierbar.

Auch typeAttributes und kindAttributes sind dynamisch, daher haben sie jedes Mal, wenn meine App startet, unterschiedliche Felder mit unterschiedlichen Werten.

Wenn jemand weiß, wie man es löst, bitte helfen.

Antwort

4

Ich würde JSONObject 's toString() Methode verwenden, um eine String zurückgeben, die Sie einfach auf einem Paket speichern können.

Dann das Objekt aus dem parzelliert String zu schaffen, sondern nur die JSONObjectconstructor verwenden, die eine String nimmt und es werden diejenigen Objektfelder für Sie automatisch ausfüllen.

+0

vielen Dank, ich wusste nicht, dass JsonObject kann einfach auf String umgewandelt werden und umgekehrt –

1

Ich würde mit diesem Ansatz gehen.

1- Pojo eine Klasse erzeugen, die

2- Bauen Sie das Objekt dieser Klasse

3- senden, das Objekt als ein serialazable

public class POJO implements Serializable{ 
 
    private String sessionId; 
 
    private String status; 
 
    // private JSONObject typeAttributes; 
 
    // SUPPOSE THIS JSONObject CONTAINS TWO FIELDS AS NAME AND AGE SO I USE TWO MORE FILDS 
 
    String name; 
 
    String age; 
 

 
    //....... WRITE GETTERS AND SETTERS 
 

 
}

serializable implementiert Lassen Sie mich wissen, wenn Sie weitere Erläuterungen zum Erstellen dieses POJO-Objekts innerhalb der Aktivität benötigen und senden Sie es dann als serialisierbar