我在向Parcel对象添加可绘制对象时遇到问题,以便将对象从一个活动发送到另一个活动。
像writeString(String)这样的方法可以将字符串添加到Parcel对象。但是不知道如何将Drawable添加到Parcel对象。
答案 0 :(得分:3)
您无法将Drawable
添加到Parcel
,因为Drawable
未实现Parcelable
界面。某些类型的Drawable
可能会实现Parcelable
,但我不知道任何类型。
您可以输入Parcel
某个标识符(例如,可绘制的资源ID),并让收件人自行获取Drawable
。
答案 1 :(得分:0)
我认为你可以尝试将Drawable包装在一个实现Parcelable的对象中。
答案 2 :(得分:0)
您可以使用Bitmap和BitmapDrawable来完成此操作。
假设你有一个名为 drawable 的 Drawable 和一个名为 parcel <的 Parcel (其中应该写入对象) / em>的
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);