我有以下代码产生错误:Error:Parceler: Unable to find read/write generator for type io.realm.Realm for io.realm.RealmObject.realm
没有extends RealmObject
它工作正常,但我想使用Realm轻松地放入数据库。有没有办法放弃RealmObject字段,只使用@Parcel的基本pojo字段?
@Parcel
public class Feed extends RealmObject{
int id;
public String text;
public String time_created;
String time_modified;
int comments_count;
int likes_count;
String feed_type;
int obj_id;
String image;
String user_name;
String user_earthmile_points;
boolean liked;
boolean commented;
boolean is_private;
String url;
int feed_creator_id;
}
答案 0 :(得分:14)
编辑#2 :实际上,我找到了一种让它工作的方法:)。请参阅下面的更新答案。
编辑#1 :虽然应用编译得很好,但在尝试使用错误Parcel
实际创建org.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy
时会崩溃。 Realm团队officially acknowledged目前无法在Parcelable
上实施RealmObject
。目前还不清楚是否/何时解决这个问题。
使用Parceler v0.2.16,您可以执行此操作:
@RealmClass // required if using JDK 1.6 (unrelated to Parceler issue)
@Parcel(value = Parcel.Serialization.BEAN, analyze = { Feed.class })
public class Feed extends RealmObject {
// ...
}
然后,在任何地方使用Parcels.wrap(Feed.class, feed)
代替Parcels.wrap(feed)
,否则您的应用会因org.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy
而崩溃。
答案 1 :(得分:1)
扩展RealmObject的所有类都将具有由注释处理器创建的匹配的RealmProxy类。必须让Parceler了解这个课程。请注意,在项目至少编译一次之前,该类不可用。
@Parcel(implementations = { PersonRealmProxy.class },
value = Parcel.Serialization.BEAN,
analyze = { Person.class })
public class Person extends RealmObject {
// ...}