我尝试使用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
与类名一起使用。对我来说非常愚蠢。但感谢您的回答!
答案 0 :(得分:1)
显然,在调用
时,你会得到一个String而不是Serializable(Event) intent.getSerializableExtra("event");
因此,您可以尝试打印此行以查看返回的值。这可能有助于你找出问题所在。
另外,你应该看一下Parcelable Class,它是一种专为android设计的Serializable