Сделать пользовательский Parcelable, содержащий байтовый массив

Я пытаюсь создать класс Parcelable, содержащий байтовый массив. Я пробовал всевозможные вещи, но все равно кажется, что я потерплю неудачу, если я хочу привести аргумент в свои намерения.

public class Car implements Parcelable{ private String numberPlate; private String objectId; private byte[] photo; private String type; private ParseGeoPoint location; private ParseUser owner; private String brand; private double pricePerHour; private double pricePerKm; public static final String TYPES[] = {"Cabrio", "Van", "SUV", "Station", "Sedan", "City", "Different"}; public Car(String numberPlate, byte[] bs, String type, ParseGeoPoint location, String brand) { this.numberPlate = numberPlate; this.photo = bs; this.type = type; this.brand = brand; this.setLocation(location); this.owner = ParseUser.getCurrentUser(); } public Car(Parcel in){ readFromParcel(in); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Car createFromParcel(Parcel in) { return new Car(in); } public Car[] newArray(int size) { return new Car[size]; } }; public int describeContents() { // TODO Auto-generated method stub return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeString(type); dest.writeString(numberPlate); dest.writeString(brand); dest.writeDouble(pricePerHour); dest.writeDouble(pricePerKm); dest.writeString(objectId); dest.writeByteArray(photo); } public void readFromParcel(Parcel in){ this.type = in.readString(); this.numberPlate = in.readString(); this.brand = in.readString(); this.pricePerHour = in.readDouble(); this.pricePerKm = in.readDouble(); this.objectId = in.readString(); byte[] ba = in.createByteArray(); in.unmarshall(ba, 0, ba.length); this.photo = ba; } 

Он отлично работает, если я не включаю массив байтов.

Почему вы используете createByteArray ?? Я пересмотрел ваш код так, как он должен работать …

 public void writeToParcel(Parcel dest, int flags) { dest.writeString(type); dest.writeString(numberPlate); dest.writeString(brand); dest.writeDouble(pricePerHour); dest.writeDouble(pricePerKm); dest.writeString(objectId); dest.writeInt(photo.length()); dest.writeByteArray(photo); } public void readFromParcel(Parcel in){ this.type = in.readString(); this.numberPlate = in.readString(); this.brand = in.readString(); this.pricePerHour = in.readDouble(); this.pricePerKm = in.readDouble(); this.objectId = in.readString(); this.photo = new byte[in.readInt()]; in.readByteArray(this.photo); } знака public void writeToParcel(Parcel dest, int flags) { dest.writeString(type); dest.writeString(numberPlate); dest.writeString(brand); dest.writeDouble(pricePerHour); dest.writeDouble(pricePerKm); dest.writeString(objectId); dest.writeInt(photo.length()); dest.writeByteArray(photo); } public void readFromParcel(Parcel in){ this.type = in.readString(); this.numberPlate = in.readString(); this.brand = in.readString(); this.pricePerHour = in.readDouble(); this.pricePerKm = in.readDouble(); this.objectId = in.readString(); this.photo = new byte[in.readInt()]; in.readByteArray(this.photo); } 
Intereting Posts
Несколько файлов dex – Превращение в формат Dalvik не удалось – Не удалось выполнить dex Исключение NullPointerException в IabHelper.queryPurchases Как добавить штрих в ShapeDrawable Android-проблема с замещением изображения в разных версиях Android для текста MultiAutoCompleteTextview Пользовательский диалог в полноэкранном режиме? Как получить только местоположение gps, используя sencha touch? Как получить результат OnPostExecute () для основного действия, потому что AsyncTask – это отдельный класс? Панель инструментов скрытой клавиатуры Компиляция и ссылка на libusb для android Прямой эфир VLC RTSP для Android Как создать миниатюру видео из файла mp4, находящегося в папке с ресурсами Как избежать перезапуска активности при изменении ориентации на Android Войти в аккаунт Google в веб-браузере, используя токен диспетчера Как удалить доверенный сертификат CA с установленными приложениями при удалении приложения SQLite onUpgrade ()