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

Issue in Parcelable implementation in Android Studio 1.2.2 Upgrade

我的包裹Class:

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());

    }

当我将类别 class 的对象发送到其他 activity 时,然后 writeToparcel() 和 createFromParcel() 方法被调用,我在

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

但是在调试时我检查了 writeToParel() 方法 department 对象是否正确存储,但是如何不返回,在 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());

}

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

department.getClass().getClassLoader()

这就是引发错误的原因。 department == null 而您正在尝试获取它的 class。因此它抛出一个 NPE。

相反,通过 class 对象获取 class 加载程序:

Department.class.getClassLoader()