2

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 カード、グローバル アプリケーション クラス、静的フィールドを使用できることはわかっています。でも使いたくない。将来、コードが変更される可能性があるため、堅牢なコードが必要です。

4

1 に答える 1

2

Drawable をビットマップに変換し、別のアクティビティに送信します。

Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
intent.putExtra("Bitmap", bitmap);

フェッチするには、その意図

Bitmap bitmap = (Bitmap)this.getIntent().getParcelableExtra("Bitmap");

詳細については、このリンクに従ってください

于 2012-11-05T06:04:09.007 に答える