2016-11-02 10 views
1
Realm 2.0.0 
Parceler 1.1.6 

私のアンドロイドアプリでも領域として使用されているPOJOクラスでParcelerライブラリを使用しようとしています。どのような方法がありますio.realm.PersonRealmProxyの生成されたParcelableクラスが見つかりません

compile 'org.parceler:parceler:1.1.6' 
apt 'org.parceler:parceler:1.1.6' 

:私はこのような依存関係を宣言した

Unable to find generated Parcelable class for io.realm.PersonRealmProxy, verify that your class is configured properly and that the Parcelable class io.realm.PersonRealmProxy$ $Parcelable is generated by Parceler 

しかし、このコード行は

Bundle bundle = new Bundle(1); 
bundle.putParcelable(UpdatePersonDialog.PERSONUPDATE_KEY, Parcels.wrap(person)); /* Crash line */ 

にこのエラーメッセージがクラッシュしますこの問題を解決するには?

これは誰にも同じ問題がある場合、私は事前に

@Parcel(analyze = Person.class) 
public class Person extends RealmObject{ 
    @PrimaryKey 
    String mId; 
    String mFirstName; 
    String mLastName; 
    String mPhoneNumber; 
    String mDob; 
    String mZip; 

    public Person() { 
    } 

    public Person(String mDob, String mFirstName, String mId, String mLastName, String mPhoneNumber, String mZip) { 
     this.mDob = mDob; 
     this.mFirstName = mFirstName; 
     this.mId = mId; 
     this.mLastName = mLastName; 
     this.mPhoneNumber = mPhoneNumber; 
     this.mZip = mZip; 
    } 

    @Override 
    public boolean isManaged() { 
     return super.isManaged(); 
    } 

    public String getId() { 
     return mId; 
    } 

    public void setId(String id) { 
     this.mId = id; 
    } 

    public String getDob() { 
     return mDob; 
    } 

    public void setDob(String dob) { 
     this.mDob = dob; 
    } 

    public String getFirstName() { 
     return mFirstName; 
    } 

    public void setFirstName(String firstName) { 
     this.mFirstName = firstName; 
    } 

    public String getLastName() { 
     return mLastName; 
    } 

    public void setLastName(String lastName) { 
     this.mLastName = lastName; 
    } 

    public String getPhoneNumber() { 
     return mPhoneNumber; 
    } 

    public void setPhoneNumber(String phoneNumber) { 
     this.mPhoneNumber = phoneNumber; 
    } 

    public String getZip() { 
     return mZip; 
    } 

    public void setZip(String zip) { 
     this.mZip = zip; 
    } 
} 

感謝を使用しています、

+1

をこれを行う?レルムオブジェクトは、データを格納する方法において非常に特殊なので、エンコード/デコードするべきではありません。インテントを介してオブジェクトを送信する必要がある場合は、オブジェクトのIDのみを送信し、他のアクティビティに対して再度フェッチする必要があります。 – jturolla

答えて

0

は答えを見つけることが私のクラスである:あなたがしなければならないのはなぜ

@Parcel(implementations = {PersonRealmProxy.class}, 
     value = Parcel.Serialization.BEAN, 
     analyze = {Person.class}) 
+0

不必要な分離コピーを持たないために、他のアクティビティでIDを送信し、再クエリする必要があります – EpicPandaForce

関連する問題