我的可分类:
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()方法,我在
处观察到了NullPointerExceptiondepartment= 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());
}
现在,代码工作正常,但现在我需要创建额外的部门对象,我认为这不是好方法。
有没有人对这个问题有任何解决方案?
答案 0 :(得分:0)
department.getClass().getClassLoader()
这就是抛出错误的原因。 department == null
并且您正在尝试获取它的课程。因此它会引发NPE。
相反,通过类对象获取类加载器:
Department.class.getClassLoader()