【问题标题】:How to deserialize my object in Android after passing it using an intent?使用意图传递对象后如何在Android中反序列化我的对象?
【发布时间】:2013-12-28 02:03:51
【问题描述】:

我正在尝试使用 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 和类名。非常愚蠢的我。不过谢谢你的回答!

【问题讨论】:

  • 与我们分享更多代码,但您不应该在 android 中使用 Serializable。而是使用 Parcelable,看看文档和一些代码示例,它非常简单。
  • 你的班级Event实现了Serializable吗?

标签: java android serialization casting serializable


【解决方案1】:

显然你在调用时得到一个 String 而不是 Serializable

(Event) intent.getSerializableExtra("event");

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

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

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 2013-10-13
    • 2013-11-24
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多