RealmObject和Parcelable

FRR*_*FRR 8 java sqlite android realm parcelable

我是Realm for Android的新手,所以我不确定我是以正确的方式接近这个.我有一个看起来像这样的课:

public class Entry extends RealmObject implements Parcelable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题是Parcelable接口包含类似的方法,describeContents() writeToParcel()并且RealmObjects不应该有除getter和setter之外的方法:

Error:(81, 17) error: Only getters and setters should be defined in model classes
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我如何让这两个一起工作?有没有比创建一个单独的类(可能是类似的RealmEntry)更好的方法?这样做会导致大量重复的代码......

Vic*_*ani 10

更新2016年5月:除非您已使用Parceler,否则现在的答案已过时.@Henrique de Sousa的解决方案要好得多.


实际上,有一种解决方法.如果您愿意使用第三方库(Parceler)进行Parcelable生成,则可以获得所需的结果.有关方便,请参阅下面引用的其他问题的答案.

使用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 {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后,使用Parcels.wrap(Feed.class, feed)而不是Parcels.wrap(feed)到处,否则您的应用程序将崩溃org.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy.


Hen*_*usa 5

现在有另一种解决方法:只需实现RealmModel接口,而不是从扩展RealmObject

@RealmClass
public class User implements RealmModel {

}
Run Code Online (Sandbox Code Playgroud)

您可以在Realm文档中找到更多信息。