2014-12-01 4 views
6

Android 용 Realm에 익숙하므로 올바른 방법으로 접근하고 있는지 잘 모르겠습니다. 그래서RealmObject 및 Parcelable

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

:

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

문제는 Parcelable 인터페이스는 describeContents()writeToParcel() 및 RealmObjects이 게터 이외의 방법과 세터가 안되는 등의 방법을 포함하고있다 :이처럼 보이는 클래스가 내 질문은 : 어떻게이 두 가지 일을 함께 할 수 있습니까? 별도의 클래스를 만드는 것보다 더 좋은 방법이 있습니까 (RealmEntry 같은 것)? 이렇게하면 중복되는 코드가 많이 생깁니다.

+0

왜 Parcelable 객체와 Realm을 사용하려고합니까? – Orgmir

+1

글쎄, 구성 변경 (장치 회전)시 Pareclable을 사용하여 개체를 db에 저장합니다. – feresr

답변

4

는 이제에 대해 다른 해결 방법은 다음과 같습니다 단지 대신 RealmObject에서 연장의 RealmModel 인터페이스를 구현 :

@RealmClass 
public class User implements RealmModel { 

} 

당신은 Realm Documentation에서 자세한 정보를 찾을 수 있습니다.

+0

하지만 데이터를 저장하기 위해 분할 가능한 개체를 사용하는 것이 좋습니다. – aleien

+1

이 답변을 참조하십시오 : http://stackoverflow.com/questions/8896751/android-store-a-parcelable-object-in-sqlite –

0

RealmObjects에서 Parcelable을 구현하는 것은 현재로서는 불가능합니다. 하나의 솔루션은 두 영역 파일을 사용하는 것입니다 : 객체 저장소 및 임시을위한 전문 하나로서 기본을 회전 등 2016

8

UPDATE 5 월 저장 : 이미 사용하지 않는 일자 아웃이 대답은 지금 파셀러. @Henrique de Sousa의 솔루션이 훨씬 좋습니다.


실제로 해결 방법이 있습니다. Parcelable 생성을 위해 제 3 자 라이브러리 (Parceler)를 사용하려는 경우 원하는 결과를 얻을 수 있습니다. 편의상 아래에 인용 된 my answer to this other question을 참조하십시오.

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 { 
    // ... 
} 

그런 다음, 그렇지 않으면 앱이 org.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy와 충돌합니다, 대신 사방 Parcels.wrap(feed)Parcels.wrap(Feed.class, feed)를 사용합니다.