Comment faire passer Drawable en utilisant Parcelable
J'ai une classe où j'ai un Drawable
en tant que membre.
Cette classe que j'utilise pour envoyer des données à travers des activités comme un Parcelable
supplémentaire.
Pour ce que j'ai prolongé la parceble, et mis en œuvre les fonctions requises.
Je suis en mesure d'envoyer les types de données de base à l'aide de lire/écrire int/string.
Mais je suis face à problème lors de regroupement de l'objet Dessiné.
Pour que j'ai essayé de convertir le Drawable
à byte array
mais je suis de la classe fonte des Exceptions.
Je suis à l'aide de code suivant pour convertir mes Dessiné au tableau d'Octets:
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);
Et de convertir un tableau d'octets à Drawable je suis à l'aide de code suivant:
final int contentBytesLen = in.readInt();
byte[] contentBytes = new byte[contentBytesLen];
in.readByteArray(contentBytes);
mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length));
Lorsque je l'exécute j'obtiens Classe cast exception.
Comment pouvons-nous écrire/pass Dessinés à l'aide de la table de hachage?
Est-il un moyen par lequel nous pouvons passer Drawable dans la Parcelle.
Grâce.
source d'informationauteur User7723337 | 2012-04-09
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez déjà convertir Drawable Bitmap dans votre code, pourquoi ne pas utiliser Bitmap comme un membre de votre Parcelable classe.
Bitmap implémente Parcelable par défaut de l'API, en utilisant Bitmap, vous n'avez pas besoin de faire quelque chose de spécial dans votre code et il sera géré automatiquement par Colis.
Ou si vous insistez pour utiliser Drawable, mettre en œuvre votre Parcelable que quelque chose comme ceci:
Espère que cette aide.
Dans mon application, j'ai sauvé Drawable/BitMap en mémoire Cache et de le transmettre à l'aide du fichier chemin d'accès de Chaîne à la place.
Pas une solution que vous cherchiez, mais au moins une solution pour votre problème.