如何在使用意图传递后在Android中反序列化我的对象?

时间:2013-12-10 13:56:36

标签: java android serialization casting serializable

我尝试使用Serializable使用以下代码将对象从一个活动传递到另一个活动:

final Event rowItem = (Event) getItem(position);
Intent intent = new Intent(context, DetailsActivity.class);
intent.putExtra("event", rowItem);
context.startActivity(intent);

这样可以正常工作(没有错误),所以在另一端我想再次反序列化它:

Intent intent = getIntent();
Event event = (Event) intent.getSerializableExtra("event");

不幸的是,这导致错误说:

java.lang.ClassCastException: java.lang.String cannot be cast to com.mycomp.model.Event

这是我第一次使用Serializable传递一个对象,所以我可能会做一些非常愚蠢的事情。但我不知道是什么。

有人知道我在这里做错了什么吗?如果需要,我很乐意分享更多代码。

[编辑] 事实证明我确实为每个参数使用了@SerializedName(value = "the_serialized_name"),但我并没有将implements Serializable与类名一起使用。对我来说非常愚蠢。但感谢您的回答!

1 个答案:

答案 0 :(得分:1)

显然,在调用

时,你会得到一个String而不是Serializable
(Event) intent.getSerializableExtra("event");

因此,您可以尝试打印此行以查看返回的值。这可能有助于你找出问题所在。

另外,你应该看一下Parcelable Class,它是一种专为android设计的Serializable