ich eine Java Bean-Klasse haben, kommentierte mit @Parcel(Parcel.Serialization.BEAN)
und Gson der @SerializedName
auf einigen Feldern:Fehlende Felder, wenn ein Parcel Objekt mit Parceler Bibliothek Abwickeln
Question.java:
@Parcel(Parcel.Serialization.BEAN)
public class Question {
private Integer id;
private String title;
private String description;
private User user;
@SerializedName("other_model_id")
private Integer otherModelId,
@SerializedName("created_at")
private Date createdAt;
// ----- Getters and setters -----
}
Wenn ich m beginnend ShowQuestionActivity
übergebe ich mein Parceled question
Objekt an es (question
hat alle Felder eingestellt):
Intent intent = new Intent(context, ShowQuestionActivity.class);
intent.putExtra("extra_question", Parcels.wrap(question));
startActivity(intent);
Auf ShowQuestionActivity
, erhalte ich "extra_question" von meinem intent
Objekt:
Question question = Parcels.unwrap(intent.getParcelableExtra(Constants.EXTRA_QUESTION));
Aber Parceler gibt mir nur Titel und eine Beschreibung (Strings) ... Alle anderen Felder sind null.
Wrapping das Objekt mit Parcels.wrap(question)
und es mit Parcels.unwrap(question)
Abwickeln auf Debugger perfekt funktioniert, aber nachdem es durch Absicht vorbei, so scheint es zu „verlieren“ ihre Werte, aber ich kann nicht das Problem finden ...
Meine Parceler Einrichtung ist folgende:
Modul build.gradle:
dependencies {
compile 'org.parceler:parceler-api:1.1.4'
apt 'org.parceler:parceler:1.1.4'
}
Und in meinem Projekt build.gradle:
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
Ihr Setup sieht korrekt aus. Sind alle Getter/Setter korrekt deklariert? Ist der Benutzer mit '@ Parcel' versehen und haben Sie einen '@ ParcelPropertyConverter' für Date hinzugefügt? –
@JohnEricksen, meine Getter und Setter sind ordnungsgemäß deklariert. Der Benutzer wird mit '@Parcel (Parcel.Serialization.BEAN)' mit Getter und Setter versehen und ich habe '@ ParcelPropertyConverter' noch nicht für Date hinzugefügt, da ich dieses Feld vorerst nicht benutzen werde. Stört Parceler das Erzeugen von Paketklassen? –
Ich versuchte herauszufinden, was los war, und als ich @ @ ParcelProperty ("Gson @SerializedName field") hinzugefügt hatte, funktionierte es wie erwartet, aber es warnte mich vor Reflektion. Muss ich wirklich @ParcelProperty für jedes Feld schreiben? Und was ist mit Reflexion? –