无法传递对象,putExtra(),无法强制转换为android.os.Serializable

时间:2016-08-20 19:17:07

标签: java android android-studio

我正在处理我的Android项目。 Delivery.java是交货清单,我想点击选定的交货并重定向到DeliveryDetails.java,显示交货的详细信息。

但我得到了这个:

  

错误:致命例外:主要

当我重定向到DeliveryDetails.java时,我的应用程序停止/崩溃。

这是我的代码:

Delivery.java(将数据发送到DeliveryDetails.java)

private ArrayList<Delivery> deliveryList;
private ListView lvDelivery;

lvDelivery.setOnItemClickListener(this);

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    Delivery selectedDelivery = deliveryList.get(i);
            Intent in = new Intent(ListActivity.this, DetailActivity.class);
    in.putExtra("delivery", (Serializable) selectedDelivery);
    startActivity(in);
}

DeliveryDetails.java(读取/接收来自Delivery.java的数据)

Delivery delivery = (Delivery) getIntent.getSerializableExtra("product");

错误:

FATAL EXCEPTION: main
Process: com.example.myproject.delivery, PID: 22095
java.lang.ClassCastException: com.example.myproject.delivery.Delivery cannot be cast to android.os.Serializable

1 个答案:

答案 0 :(得分:0)

您必须使交付可序列化,这样您就可以将对象从一个Activity传递到另一个Activity。

但我会建议您使用可序列化界面而不是可序列化。下面是一个示例,如何创建一个类parcelabe并将对象从一个活动传递到另一个活动click here ...

Parcelabe 可序列化 Difference之间存在差异