2014-12-01 17 views
6

Android için Realm için yeni oldum, bu yüzden doğru şekilde yaklaştığımı emin değilim. YaniRealmObject VE Parcelable

Error:(81, 17) error: Only getters and setters should be defined in model classes 

:

public class Entry extends RealmObject implements Parcelable { 
    ... 
} 

sorun Parcelable arayüzü describeContents()writeToParcel() ve RealmObjects alıcılar dışındaki yöntemler ve ayarlayıcıları olması gerekiyordu değil gibi yöntemleri içerir: Ben şöyle bir sınıf var sorum şu: Bu iki işi nasıl birlikte yapabilirim? Ayrı bir sınıf oluşturmanın daha iyi bir yolu var mı (belki RealmEntry gibi bir şey)? Bunu yapmak çoğaltılmış bir çok kodla sonuçlanır ...

+0

Neden Parcelable nesnelerini ve Realm'yi kullanmaya çalışıyorsunuz? – Orgmir

+1

Eh, yapılandırma değişiklikleri (aygıt rotasyonları) ve nesneleri bir db – feresr

cevap

4

Şimdi bunun için farklı bir çözüm vardır: sadece yerine RealmObject uzanan bir RealmModel arabirimini uygulamak:

@RealmClass 
public class User implements RealmModel { 

} 

Sen Realm Documentation daha fazla bilgi bulabilirsiniz.

+0

üzerine depolamak için Realm'yi korumak için Pareclable kullanıyorum Ama verileri depolamak için parcelable nesneleri kullanmak iyi bir fikir midir? – aleien

+1

bu cevaba bakın: http://stackoverflow.com/questions/8896751/android-store-a-parcelable-object-in-sqlite –

0

Şu anda RealmObjects üzerinde Parcelable uygulamak mümkün değildir. bir çözüm iki bölge dosyaları kullanın etmektir: nesneye mağazasında ve geçici için özel olarak varsayılan bir rotasyon vs. 2016

8

GÜNCELLEME Mayıs için kaydeder: Zaten kullanmadığınız sürece out tarihli Bu cevaptır şimdi Parceler. @Henrique de Sousa'nın çözümü çok daha iyi.


Aslında, bir geçici çözüm var. Parcelable jenerasyonu için bir üçüncü taraf kitaplığı (Parceler) kullanmaya istekli iseniz istediğiniz sonucu alabilirsiniz. Kolaylık sağlamak için aşağıda verilen my answer to this other question'a bakın.

Parceler v0.2.16 ile, bunu yapabilirsiniz:

@RealmClass  // required if using JDK 1.6 (unrelated to Parceler issue) 
@Parcel(value = Parcel.Serialization.BEAN, analyze = { Feed.class }) 
public class Feed extends RealmObject { 
    // ... 
} 

Sonra aksi uygulama org.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy kilitlenmesine yerine her yerde Parcels.wrap(feed) ait Parcels.wrap(Feed.class, feed) kullanın.