0
首先,所有的代碼,我將把在my repository如何在Android上打包自定義列表?所有的
我一直有一個parcelizing問題PlayList的parcelizing創造奇蹟,但反序列化在任一個NullPointerException或BadParcelableException結束。我無法查明異常的來源,因此我要求您檢查我的代碼,看看是否濫用任何OOP原則或徹底濫用API。
首先,所有的代碼,我將把在my repository如何在Android上打包自定義列表?所有的
我一直有一個parcelizing問題PlayList的parcelizing創造奇蹟,但反序列化在任一個NullPointerException或BadParcelableException結束。我無法查明異常的來源,因此我要求您檢查我的代碼,看看是否濫用任何OOP原則或徹底濫用API。
您無法將所有班級作爲參數傳遞給parcel.write()
。您只需傳遞在構造函數中收到的參數copy
。你還需要確保所有被操作的對象都是或實現了「可裁剪」。
我相信你需要改變follwing:
在構造函數中
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;
}
注意
您還需要在Song
類這個工作落實Parcelable
,但它會在代碼庫已經完成。