首先,我将引用的所有代码都在my repository
我遇到了包裹PlayList的问题,parcelizing工作奇迹,但反序列化最终导致NullPointerException或BadParcelableException。我无法确定异常的来源,因此我要求您检查我的代码,看看我是否滥用任何OOP原则或彻底滥用API。
答案 0 :(得分:0)
您无法将所有类作为参数传递给parcel.write()
。您只需传递构造函数中收到的参数copy
。您还需要确保操纵的所有对象都是或实现'Parcelable`。
我相信你需要改变以下内容:
在构造函数
中ArrayList<Song> copy;
public PlayList(ArrayList<Song> copy){
super(copy);
this.copy = copy;
}
在写()
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeTypedList(copy);
parcel.writeInt(actualSong);
parcel.writeInt(shuffling ? 1 : 0);
parcel.writeInt(repeating ? 1 : 0);
}
在阅读()
中public PlayList(Parcel serialized) {
super(serialized.readTypedList(copy, Song.WptType.CREATOR));
actualSong = serialized.readInt();
shuffling = serialized.readInt() == 1 ? true : false;
repeating = serialized.readInt() == 1 ? true : false;
}
注意强>
您还需要在Parcelable
类中实现Song
才能使其正常工作,但它看起来已在代码存储库中完成。