2016-02-23 4 views
0

Я пытаюсь отправить объект между двумя действиями. Объект заказа содержит список элемента ведьмой я реализовал так:ClassNotFoundException, когда unmarshalling list of parcelable

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 У меня есть ситуации, где он может contais идентификатор продукта или «класса» идентификатор («класс», когда продукт имеют цвет и размер), но никогда не имеют двух значений.

так я реализовал так:

@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()); 

Любые идеи о том, как решить эту проблему?

ответ

1

До сих пор не знаю, что вызвало ошибку, но я решил эту проблему, как сильфона

Когда я проезжал стоимость заказа я использую только Намерение сделать это, например:

Intent i = new Intent(this, OrderDetailActivity.class); 
i.putExtras("order", order); 
startActivity(i); 

И, чтобы прочитать это я делал так:

Order order = getIntent().getParcelableExtra("order"); 

Таким образом, я использовал Bundle для передачи значения.

Intent i = new Intent(this, OrderDetailActivity.class); 

Bundle b = new Bundle(); 
b.putParcelable("order", order); 

i.putExtras(b); 
startActivity(i); 

И

Bundle b = getIntent().getExtras(); 

Order order = b.getParcelable("order"); 

 Смежные вопросы

  • Нет связанных вопросов^_^