Tôi có một lớp học mà tôi có một Drawable
là một thành viên.
Lớp học này tôi đang sử dụng để gửi dữ liệu qua các hoạt động dưới dạng chi tiết bổ sung Parcelable
.Làm thế nào để vượt qua Drawable sử dụng Parcelable
Đối với điều đó tôi đã mở rộng parceble và triển khai các chức năng được yêu cầu.
Tôi có thể gửi các kiểu dữ liệu cơ bản bằng cách sử dụng đọc/ghi int/chuỗi.
Nhưng tôi đang gặp vấn đề trong khi marshaling đối tượng Drawable.
Đối với điều đó, tôi đã cố gắng chuyển đổi Drawable
thành byte array
, nhưng tôi đang nhận ngoại lệ cho lớp học.
Tôi đang sử dụng mã sau vào bí mật drawable của tôi để mảng 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);
Và để chuyển đổi mảng byte để drawable tôi đang sử dụng đoạn mã sau:
final int contentBytesLen = in.readInt();
byte[] contentBytes = new byte[contentBytesLen];
in.readByteArray(contentBytes);
mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length));
Khi tôi chạy này tôi nhận được Class cast exception.
Làm thế nào chúng ta có thể viết/vượt qua Có thể vẽ bằng cách sử dụng HashMap?
Có cách nào để chúng tôi có thể vượt qua Drawable in Parcel hay không.
Cảm ơn.
Vì vậy, ví dụ, nếu tôi có một đối tượng với một bitmap và các loại khác, tôi không phải viết hình ảnh trong bưu kiện? và nó sẽ làm việc tất cả tìm và dandy cho tôi? – eddiecubed
@yorkw 'getBitmap()' trả về 'Bitmap' theo mặc định, Tại sao bạn lại gõ lại? – blizzard
Có thay thế cho điều này bây giờ mà 'BitmapDrawable' không được chấp nhận? – AdamMc331