У меня есть класс, в котором у меня есть Drawable
как член.
Этот класс, который я использую для отправки данных через действия как Parcelable
extra.
Для этого я расширил parceble и реализовал требуемые функции.
Я могу отправить основные типы данных, используя read/write int/string.
Но я столкнулся с проблемой при маршалинге объекта Drawable.
Для этого я попытался преобразовать Drawable
в byte array
, но я получаю исключения класса.
Я использую следующий код для скрытия моего массива Drawable to Byte:
Bitmap bitmap = (Bitmap)((BitmapDrawable) mMyDrawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[]byteArray = stream.toByteArray();
out.writeInt(byteArray.length);
out.writeByteArray(byteArray);
И для преобразования массива байтов в Drawable я использую следующий код:
final int contentBytesLen = in.readInt();
byte[] contentBytes = new byte[contentBytesLen];
in.readByteArray(contentBytes);
mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length));
Когда я запустил это, я получаю исключение класса cast.
Как мы можем написать/передать Drawable с помощью HashMap?
Есть ли способ, с помощью которого мы можем пройти Drawable в Parcel.
Спасибо.