Я пытаюсь отправить объект между двумя действиями. Объект заказа содержит список элементов, которые я реализовал следующим образом:
OrderItem Object:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeParcelable(priceTableItem, flags);
dest.writeInt(qunatity);
dest.writeDouble(value); // quantity * unitValue
dest.writeDouble(discount);
}
protected OrderItem(Parcel in) {
id = in.readInt();
priceTableItem = in.readParcelable(PriceTableItem.class.getClassLoader());
quantity = in.readInt();
value = in.readDouble();
discount = in.readDouble();
}
В PriceTableItem у меня есть ситуация, когда он может содержать идентификатор продукта или идентификатор «оценки» («оценка» - это когда продукт имеет цвет и размер), но никогда не может иметь оба значения.
поэтому я реализовал так:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeParcelable(priceTable, flags);
dest.writeValue(produto);
dest.writeValue(grade);
dest.writeDouble(unitPrice);
dest.writeByte((byte) (isActive ? 1 : 0));
}
protected PriceTableItem(Parcel in) {
id = in.readInt();
priceTable = in.readParcelable(PriceTable.class.getClassLoader());
product = (Product) in.readValue(Product.class.getClassLoader());
grade = (Grade) in.readValue(Grade.class.getClassLoader());
unitPrice = in.readDouble();
isactive = in.readByte() != 0;
}
Проблема возникает, когда я передаю объект заказа из своего OrderListActivity в OrderDetailActivity. Он прочитал все атрибуты перед моим списком элементов. Когда он пытается прочитать PriceTable на OrderItem, я получаю:
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.intelecto.intesigmobile/br.com.intelecto.intesigmobile.activity.PedidoDetailActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
Строка проблемы:
priceTableItem = in.readParcelable(PriceTableItem.class.getClassLoader());
Любые идеи о том, как решить эту проблему?