I'm new to Realm for Android so I'm not sure I'm approaching this the right way. I have a class which looks like this:
public class Entry extends RealmObject implements Parcelable {
...
}
The problem is the Parcelable
interface contains methods like describeContents()
writeToParcel()
and RealmObjects aren't supposed to have methods other than getters and setters:
Error:(81, 17) error: Only getters and setters should be defined in model classes
So my question is: How can I make these two work together? Is there a better way than creating an separate class (maybe something like RealmEntry
)? Doing so would result in a lot of duplicated code...
Parcelable and Bundle objects are intended to be used across process boundaries such as with IPC/Binder transactions, between activities with intents, and to store transient state across configuration changes.
Create Parcelable class without plugin in Android Studioimplements Parcelable in your class and then put cursor on "implements Parcelable" and hit Alt+Enter and select Add Parcelable implementation (see image). that's it.
UPDATE May 2016: This is answer is now out-dated unless you already use Parceler. @Henrique de Sousa's solution is much better.
Actually, there is a workaround. You can get the result you want if you're willing to use a third-party library (Parceler) for Parcelable
generation. See my answer to this other question, quoted below for convenience.
With Parceler v0.2.16, you can do this:
@RealmClass // required if using JDK 1.6 (unrelated to Parceler issue) @Parcel(value = Parcel.Serialization.BEAN, analyze = { Feed.class }) public class Feed extends RealmObject { // ... }
Then, use
Parcels.wrap(Feed.class, feed)
instead ofParcels.wrap(feed)
everywhere, otherwise your app will crash withorg.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy
.
Now there's a different workaround for that: just implement the RealmModel
interface instead of extending from RealmObject
:
@RealmClass
public class User implements RealmModel {
}
You can find more information in the Realm Documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With