Ich habe eine Klasse, wo ich eine Drawable
als Mitglied haben.
Diese Klasse verwende ich zum Senden von Daten über Aktivitäten als Parcelable
extra.So übergeben Sie Drawable mit Parcelable
Dafür habe ich das Parceble erweitert und die erforderlichen Funktionen implementiert.
Ich bin in der Lage, die grundlegenden Datentypen mithilfe von lesen/schreiben int/string.
Aber ich habe Probleme beim Marshalling der Drawable-Objekt.
Dafür habe ich versucht, die Drawable
in byte array
zu konvertieren, aber ich bekomme Klassenausnahmen Exceptions.
ich folgenden Code bin mit meinem Drawable auf Byte-Array verdeckte:
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);
Und Byte-Array zu konvertieren drawable i folgenden Code verwenden:
final int contentBytesLen = in.readInt();
byte[] contentBytes = new byte[contentBytesLen];
in.readByteArray(contentBytes);
mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length));
Wenn ich diese laufen bekomme ich Class-Cast-Ausnahme
Wie können wir Drawable mit der HashMap schreiben/übergeben?
Gibt es eine Möglichkeit, wie wir Drawable im Paket übergeben können.
Danke.
Also zum Beispiel, wenn ich ein Objekt mit einer Bitmap und anderen Typen habe, muss ich das Bild nicht in das Paket schreiben? und es wird alles funktionieren, finde und dandy für mich? – eddiecubed
@yorkw 'getBitmap()' '' gibt 'Bitmap' standardmäßig zurück, warum Sie wieder tippen? – blizzard
Gibt es eine Alternative dafür, dass "BitmapDrawable" veraltet ist? – AdamMc331