【问题标题】:java.io.NotSerializableException: android.os.Bundle while trying to serialize an object that contains android bundlejava.io.NotSerializableException: android.os.Bundle 在尝试序列化包含 android bundle 的对象时
【发布时间】:2016-06-20 03:58:48
【问题描述】:

我想使用 Messageapi 从智能手表向智能手机发送一个对象。由于 messageapi 需要字节数组来发送消息,我想将我的对象转换为字节数组。我使用 apache utils 来序列化和反序列化。序列化时出现以下错误:

org.apache.commons.lang3.SerializationException: java.io.NotSerializableException: android.os.Bundle
           at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:156)
           at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:178)

我的对象有两个变量 - 一个字符串和一个 android 包。

以下是代码实现:

序列化:

byte[] data = SerializationUtils.serialize(myObject);

反序列化:

MyObject myObject = (MyObject) SerializationUtils.deserialize(byte[] data)

序列化包含 android bundle 的对象的最佳方法是什么?

MyObject 类如下:

public class MyObject implements Serializable {

    private String type;
    private Bundle data;

    public String getType() {
        return type;
    }

    public void setType(String value) {
        type = value;
    }

    public Bundle getData() {
        return data;
    }

    public void setData(Bundle value) {
        data = value;
    }

}

PS:我已经尝试 Parcelable 来序列化包含 android 包的对象,它可以在相同操作系统版本的设备中工作。但是当涉及的两个设备具有不同版本的操作系统时(例如,使用 wifip2p 从 API 级别 23 设备向 API 级别 15 设备发送消息),它就不起作用。所以我正在寻找一种一直有效的方法。

【问题讨论】:

  • 你的MyObject实现可序列化??
  • 是的。 MyObject 确实实现了可序列化..
  • 您能否编辑问题并在其中包含MyObject 类??
  • 我在问题中添加了类

标签: android serialization android-bundle


【解决方案1】:

问题:

我认为有些对象不能像 Bundle 和 Context 那样被序列化。它自己说的错误原因是无法序列化Bundle。

java.io.NotSerializableException: android.os.Bundle

解决方案:

尝试从MyObject 中删除private Bundle data;,看看你是不是 遇到同样的错误??

你需要找到一种序列化Bundle的方法。以下是您可以参考的问题:

How to serialize a Bundle?

【讨论】:

  • 我已经试过了。有用。 Parcelable 可以做到这一点,但只能跨相同操作系统的设备。在您提供的链接中,是否有任何解决方案可以帮助我跨设备发送和接收数据?我需要在一台设备中序列化数据,在另一台设备中发送、接收并反序列化以检索数据。
  • 您可以使用除Bundle 之外的任何其他格式。使用 JSON 非常好,而且现在很流行..!!
  • 谢谢。所以你说我可以将对象转换为字节数组并使用 JSON 反转转换。让我试试。
  • 嗨,你能帮我写几行代码吗?我需要将 MyObject 转换为字节数组并在另一端反转它。
  • 这可能对你有帮助:stackoverflow.com/questions/7947871/…
猜你喜欢
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2011-01-01
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
相关资源
最近更新 更多