如何通过Intents Bundle传递RealmObject?有没有办法将RealmObject写入parcel? 我出于明白的原因不想使用Serializable。
答案 0 :(得分:2)
您无法在Realm模型类中实现Parcelable,如Realm Java Doc中所述
请注意,getm和setter将被RealmObjects在后面使用的生成的代理类覆盖,因此您添加到getter&的任何自定义逻辑都将被覆盖。实际上不会执行setter。
但是有一个适合你的工作,实现Parceler Library你将能够跨活动和片段发送对象
在Realm Github https://github.com/johncarl81/parceler/issues/57
上查看此已结束的问题其中一个答案显示了如何在领域中使用Parceler,有必要在@Parcel注释上设置自定义参数。
答案 1 :(得分:2)
最简单的解决方案是使用Parceler:https://realm.io/docs/java/latest/#parceler
例如:
// All classes that extend RealmObject will have a matching RealmProxy class created
// by the annotation processor. Parceler must be made aware of this class. Note that
// the class is not available until the project has been compiled at least once.
@Parcel(implementations = { PersonRealmProxy.class },
value = Parcel.Serialization.BEAN,
analyze = { Person.class })
public class Person extends RealmObject {
// ...
}
答案 2 :(得分:-1)
制作您的RealmObject工具Parcelable
,这是Developers' doc的典型实现:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}