2012-01-27 71 views

回答

3

您不能将Drawable添加到Parcel,因为Drawable没有实现Parcelable接口。某些类型的Drawable可能会执行Parcelable,但我不知道任何。

你可以把在Parcel一些标识符(例如,绘制资源ID),并有收件人获得自身的Drawable

0

我想你可以尝试在实现Parcelable的对象内包装Drawable。

0

您可以使用BitmapBitmapDrawable来做到这一点。

比方说,你有一个可绘制称为绘制包裹(其中对象应写入)称为包裹

要写出DrawableParceable

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

要阅读从Parceable的绘制对象:

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);