2

あるアクティビティから別のアクティビティにオブジェクトを送信するために、描画可能オブジェクトを Parcel オブジェクトに追加する際に問題に直面しています。

文字列を Parcel オブジェクトに追加する writeString(String) などのメソッドがあります。しかし、Drawable を Parcel オブジェクトに追加する方法がわかりません。

4

3 に答える 3

3

はインターフェイスを実装していないためDrawable、 を にParcel追加することはできません。特定のタイプのが実装されている可能性がありますが、私は何も知りません。DrawableParcelableDrawableParcelable

Parcel何らかの識別子 (たとえば、描画可能なリソース ID) を入れて、受信者Drawableに独自に取得させることができます。

于 2012-01-27T13:18:51.350 に答える
0

BitmapBitmapDrawableを使用してそれを行うことができます。

drawableと呼ばれるDrawableと、parcelと呼ばれる (オブジェクトが書き込まれる) Parcelがあるとします

DrawableParceableに書き込むには:

if ( drawable != null ) {
    Bitmap bitmap = (Bitmap) ((BitmapDrawable) drawable).getBitmap();
    parcel.writeParcelable(bitmap, flags);
}
else {
    parcel.writeParcelable(null, flags);
}

Parceable から Drawable を読み取るには:

Bitmap bitmap = (Bitmap) in.readParcelable(getClass().getClassLoader());
if ( bitmap != null ) {
    drawable = new BitmapDrawable(bitmap);
}
else {
    drawable = null;
}

特に、コンストラクタBitmapDrawable (Bitmap bitmap)は廃止されたため、代わりにBitmapDrawable (Resources res, Bitmap bitmap)を使用することをお勧めします。

drawable = new BitmapDrawable(context.getResources(), bitmap);
于 2013-11-19T16:03:10.463 に答える
0

Parcelable を実装するオブジェクト内に Drawable をラップしてみることができると思います。

于 2013-03-27T08:55:51.660 に答える