首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:包含可打包字段的可打包类

Android:包含可打包字段的可打包类
EN

Stack Overflow用户
提问于 2014-07-21 19:20:27
回答 2查看 1.1K关注 0票数 0

注意:解决方案在答案中,首先是我不能接受的解决方案,因为它是我自己的答案。我希望这对其他人有帮助。

我想让我的类,包括一个可打包的对象,成为可打包的。换句话说,假设我有一个包含3个字段的类: String name、int id和Location loc。现在我想让这个类成为Parcelable类。我该怎么做呢?到目前为止,我就是这么做的:

代码语言:javascript
复制
public MyClass(Parcel in) {
name = in.readString();
id = in.readInt();
loc = in.readParcelable(Location.class.getClassLoader()); }

public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(id);
dest.writeParcelable(loc, flags); }

当我使用它时,我得到了错误:解组时找不到类...有谁知道我为什么会得到这个错误,以及如何修复它?提前感谢您的回复。

编辑:

我必须补充一点,由于我要将此数据发送到一个服务,该服务正在处理它自己的进程,所以我使用的是Handler技术,所以这可能是问题所在。但是该方法仍然做得很好,因为在我引入MyClass中的Location对象之前,它一直工作得很好。

EN

回答 2

Stack Overflow用户

发布于 2014-07-22 18:51:15

解决方案:我找到了解决方案。我的实现是好的。问题是我在一个单独的进程中发送消息,所以我需要设置适当的classLoader才能使其正常工作。所以上面的代码是正确的,当我从捆绑包或消息中检索对象时,我必须进行更改。我将粘贴提供给我解决方案的链接,即使没有人将其设置为正确答案:Problem unmarshalling parcelables

票数 1
EN

Stack Overflow用户

发布于 2014-07-21 19:27:31

这部分代码似乎是正确的。

  • 确保您也正确地处理了内部位置。
  • 另一件可能出错的事情是,如果您在包含位置之前序列化了类,而现在您正在尝试反序列化还没有位置的旧对象。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24863823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档