为了将一个对象从一个活动发送到另一个活动,我在向Parcel对象添加可绘制对象时遇到了问题。如何将可绘制对象添加到android中的Parcel对象?
有像writeString(String)这样的方法可以将字符串添加到Parcel对象。但不知道如何将一个Drawable添加到Parcel对象。
为了将一个对象从一个活动发送到另一个活动,我在向Parcel对象添加可绘制对象时遇到了问题。如何将可绘制对象添加到android中的Parcel对象?
有像writeString(String)这样的方法可以将字符串添加到Parcel对象。但不知道如何将一个Drawable添加到Parcel对象。
您不能将Drawable
添加到Parcel
,因为Drawable
没有实现Parcelable
接口。某些类型的Drawable
可能会执行Parcelable
,但我不知道任何。
你可以把在Parcel
一些标识符(例如,绘制资源ID),并有收件人获得自身的Drawable
。
我想你可以尝试在实现Parcelable的对象内包装Drawable。
您可以使用Bitmap和BitmapDrawable来做到这一点。
比方说,你有一个可绘制称为绘制和包裹(其中对象应写入)称为包裹。
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);