Activity не запускается (проблема с Extras)

120
19 декабря 2020, 01:40

При запуске Activity вылетает ошибка и приложение закрывается. Раньше она запускалась, но перестала после того как в классе (который я передаю через putExtra) появилось новое поле (SerialBitmap). В чем проблема или как можно это решить?

Класс который передается:

public class Item implements Serializable {
    private int ID;
    private String name;
    private String smallDescr;
    private String bigDescr;
    private String ingridients;
    private double price;
    private int image;
    private int rating;
    private SerialBitmap img;
    public Item(String name, String smallDescr, String bigDescr, int image) {
        this(name,smallDescr,bigDescr,image,1," ",0f,1);
    }
    public Item(String name, String smallDescr, String bigDescr, int image, int id, String ingridients, double price, int rating){
        this.name = name;
        this.smallDescr = smallDescr;
        this.bigDescr = bigDescr;
        this.image = image;
        this.ID = id;
        this.ingridients = ingridients;
        this.price = price;
        this.rating = rating;
    }
    public String GetName() {
        return name;
    }
    public void SetName(String name) {
        this.name = name;
    }
    public String GetSmallDescr() {
        return smallDescr;
    }
    public void SetSmallDescr(String smallDescr) {
        this.smallDescr = smallDescr;
    }
    public String GetBigDescr() {
        return bigDescr;
    }
    public void SetBigDescr(String bigDescr) {
        this.bigDescr = bigDescr;
    }
    public int GetImage() {
        return image;
    }
    public void SetImage(int image) {
        this.image = image;
    }
    public double GetPrice() {
        return this.price;
    }
    public void SetPrice(double price) {
        this.price = price;
    }
    public int GetID() {
        return this.ID;
    }
    public void SetID(int id) {
        this.ID = id;
    }
    public String GetIngridients() {
        return this.ingridients;
    }
    public void SetIngridients(String ingridients) {
        this.ingridients = ingridients;
    }
    public int GetRating() {
        return rating;
    }
    public void SetRating(int rating) {
        this.rating = rating;
    }
    public Bitmap GetImg(){
        return img.getBitmap();
    }
    public SerialBitmap GetSBitmap(){
        return img;
    }
    public void SetImg(Bitmap img){
        this.img = new SerialBitmap(img);
    }

Класс SerialBitmap

public class SerialBitmap implements Serializable {
    private Bitmap bitmap;
    private transient Bitmap.CompressFormat compressFormat = Bitmap.CompressFormat.PNG;
    private transient int compressQuality = 100;
    public SerialBitmap(Bitmap bitmap)
    {
        this.bitmap = bitmap;
    }
    public Bitmap getBitmap() {
        return bitmap;
    }
    public void recycle() {
        if (bitmap!=null && !bitmap.isRecycled()) bitmap.recycle();
    }
    private void writeObject(java.io.ObjectOutputStream out) throws IOException {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(compressFormat, compressQuality, stream);
        byte[] byteArray = stream.toByteArray();
        out.writeInt(byteArray.length);
        out.write(byteArray);
    }
    private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {

        int bufferLength = in.readInt();
        byte[] byteArray = new byte[bufferLength];
        int pos = 0;
        do {
            int read = in.read(byteArray, pos, bufferLength - pos);
            if (read != -1) {
                pos += read;
            } else {
                break;
            }
        } while (pos < bufferLength);
        bitmap = BitmapFactory.decodeByteArray(byteArray, 0, bufferLength);
    }
    public Bitmap.CompressFormat getCompressFormat() {
        return compressFormat;
    }
    public void setCompressFormat(Bitmap.CompressFormat compressFormat) {
        this.compressFormat = compressFormat;
    }
    public int getCompressQuality() {
        return compressQuality;
    }
    public void setCompressQuality(int compressQuality) {
        this.compressQuality = compressQuality;
    }
}

Фрагмент где запускается Activity

int number = Integer.parseInt(link.getSchemeSpecificPart());
Intent product_info = new Intent(this, InformationActivity.class);
product_info.putExtra(Item.class.getSimpleName(), listOfItems.get(number));
startActivity(product_info);
READ ALSO
Как избавиться от множества If

Как избавиться от множества If

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

138
Аналог ref в spring @Configuration

Аналог ref в spring @Configuration

@Configuration позволяет внутренние зависимостиОзначает ли это, что вызвав метод создания одного бина из другого, можно сымитировать поведение...

115
Как в JSP вывести одну из трех таблиц

Как в JSP вывести одну из трех таблиц

Подскажите, а то уже всю голову сломал! Задача: У меня есть три таблицы, с помощью "поля со списком" я должен выбрать одну из них и в цикле вывести:

102