【问题标题】:Unable to find generated Parcelable class for io.realm.PersonRealmProxy找不到为 io.realm.PersonRealmProxy 生成的 Parcelable 类
【发布时间】:2017-03-16 11:06:03
【问题描述】:
Realm 2.0.0
Parceler 1.1.6

我正在尝试将 Parceler 库与我的 POJO 类一起使用,该类也用于我的 android 应用程序中的领域。

但是,这行代码会崩溃

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

这是错误信息:

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

我已经声明了这样的依赖关系:

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

有没有办法解决这个问题?

这是我正在使用的课程

@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;
    }
}

非常感谢,

【问题讨论】:

  • 为什么需要这样做?您不应该对领域对象进行编码/解码,因为它们在存储数据的方式上非常特殊。如果你必须通过一个意图发送一个对象,你应该只发送对象的 id,然后在另一个活动中再次获取它。

标签: android realm parceler


【解决方案1】:

如果其他人有同样的问题,找到答案:

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

【讨论】:

  • 您应该发送 ID 并在其他活动中重新查询,以免有不必要的分离副本
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多