Parcelable Interface を使用してドローアブル フィールドを含むオブジェクトを別のアクティビティに渡したいです。しかし、問題は、
public void writeToParcel(Parcel parcel, int flags)
(オブジェクトが送信する必要がある) クラスのオーバーライドされたメソッドで、「parcel.writeDrawable」のようなメソッドを持つことができないことです。したがって、他のフィールドは渡すことができますが、Drawable は渡しません。Parcelable Interface を実装した後、クラスに次のメソッドを追加しました。
public static final Parcelable.Creator<ImageInfo> CREATOR = new Parcelable.Creator<ImageInfo>() {
public ImageInfo createFromParcel(Parcel source) {
return new ImageInfo(source);
}
public ImageInfo[] newArray(int size) {
return new ImageInfo[size];
}
};
public int describeContents() {
return 1;
}
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(name);
parcel.writeString(price);
parcel.writeString(urlOfImage);
}
次のコードを使用して、オブジェクトをインテントに入れています
Bundle b = new Bundle();
b.putParcelable("parse", imageInfo);
intentTrackIntHome.putExtras(b);
それで、その描画可能なフィールドを渡すために私がしなければならないこと。
共有設定、SD カード、グローバル アプリケーション クラス、静的フィールドを使用できることはわかっています。でも使いたくない。将来、コードが変更される可能性があるため、堅牢なコードが必要です。