私はInterface Parcelable
を勉強しています。どのように動作するかを完全に理解しようとするといくつかの問題に直面しています。Parcelable Interfaceについての説明
私はあなたに私のクラスを示しています:
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