Android Studio 1.2.2升级中的Parcelable实现中的问题

时间:2015-06-19 16:24:25

标签: android android-studio parcelable

我的可分类:

public class Category  implements Parcelable{
    int id;
    String name;
    Department department;
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(id);
        dest.writeString(name);
        dest.writeParcelable(department, 10);

    }

    public static final Parcelable.Creator<Category> CREATOR = new Parcelable.Creator<Category>() {
        public Category createFromParcel(Parcel in) {
            return new Category(in);
        }

        public Category[] newArray(int size) {
            return new Category[size];
        }
    };

    public Category(Parcel in){


        id=in.readInt();
        name=in.readString();
        department= in.readParcelable(department.getClass().getClassLoader());

    }

当我将类别类的对象发送到其他活动时,调用了writeToparcel()和createFromParcel()方法,我在

处观察到了NullPointerException
department= in.readParcelable(department.getClass().getClassLoader());

但是调试时我已经检查过writeToParel()方法部门对象存储正确,但是如何不返回, createFromParcel(),相同的代码在Android Studio 1.1中正常运行。 目前我改变了我的实现代码:

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(id);
    dest.writeString(name);
    dest.writeParcelable(department, Constants.PARCELABLE_DEPARTMENT);
    dest.writeInt(department.getId());
    dest.writeString(department.getName());
}

public Category(Parcel in){
    id=in.readInt();
    name=in.readString();
    department=new Department(in.readInt(),in.readString());

}

现在,代码工作正常,但现在我需要创建额外的部门对象,我认为这不是好方法。
有没有人对这个问题有任何解决方案?

1 个答案:

答案 0 :(得分:0)

department.getClass().getClassLoader()

这就是抛出错误的原因。 department == null并且您正在尝试获取它的课程。因此它会引发NPE。

相反,通过类对象获取类加载器:

Department.class.getClassLoader()