我正在學習界面Parcelable
,我在試圖完全理解它的工作原理時遇到一些問題。 在互聯網上我沒有找到答案,我的一些問題:關於可分界面的說明
我告訴你我的類別:
public class Media implements IModel, Parcelable{
private Uri uri;
private long _ID;
private boolean isOnDb = false;
private boolean isSelected = false;
/*Getter and setter methods
........
*/
/*********************************** Parcelable **********************************/
public static final Parcelable.Creator CREATOR = new Parcelable.Creator<Media>(){
@Override
public Media createFromParcel(Parcel parcel) {
return new Media(parcel);
}
@Override
public Media[] newArray(int i) {
return new Media[i];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeParcelable(uri, 1);
parcel.writeLong(_ID);
parcel.writeByte((byte) (isOnDb ? 1 : 0));
parcel.writeByte((byte) (isSelected ? 1 : 0));
}
private Media (Parcel parcel){
uri = parcel.readParcelable(Uri.class.getClassLoader());
_ID = parcel.readLong();
isOnDb = parcel.readByte() != 0;
isSelected = parcel.readByte() != 0;
}
}
問題1 正如你所看到的,我那裏有2構造字段Media(Uri uri, long _ID)
。如果方法writeToParcel()
和構造函數private Media (Parcel parcel)
在他們的身體內部有4個字段?我的意思是......由private Media (Parcel parcel)
和writeToParcel()
管理的字段應該反映傳遞給「其他」構造函數的字段數量?
問題2 我該如何管理Uri
字段?我做的方式是否正確? P.S .:我不明白爲什麼我不能寫parcel.writeSerializable(Uri);
即使Uri
類implements Serializable
我得到一個編譯錯誤。
預先感謝您
謝謝你:) – MDP