如何在Android中的Parcel对象中添加Drawable对象?

时间:2012-01-27 13:14:31

标签: android parcel

我在向Parcel对象添加可绘制对象时遇到问题,以便将对象从一个活动发送到另一个活动。

像writeString(String)这样的方法可以将字符串添加到Parcel对象。但是不知道如何将Drawable添加到Parcel对象。

3 个答案:

答案 0 :(得分:3)

您无法将Drawable添加到Parcel,因为Drawable未实现Parcelable界面。某些类型的Drawable可能会实现Parcelable,但我不知道任何类型。

您可以输入Parcel某个标识符(例如,可绘制的资源ID),并让收件人自行获取Drawable

答案 1 :(得分:0)

我认为你可以尝试将Drawable包装在一个实现Parcelable的对象中。

答案 2 :(得分:0)

您可以使用BitmapBitmapDrawable来完成此操作。

假设你有一个名为 drawable Drawable 和一个名为 parcel <的 Parcel (其中应该写入对象) / em>的

Drawable写入Parceable

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