如何在意图中将 SoapObject 从一个 Activity 传递到另一个

How to pass SoapObject from one Activity to another in an intent

我需要在 intent 中将 SoapObject 从一个 Activity 传递给另一个 Activity。这可能吗?

我看不到它实现了 Serializable,但它确实实现了 KvmSerializable(尽管我不知道它是什么)。

Activity 个实例之间传递控制被视为进程间通信。 Intent 包含此 "calling convention" 的控制和数据参数。

因此,您可以通过的内容受到限制。 Intent 只能传递可存储在 Bundle 中的对象。这包括 "value" 类型、ArrayListParcelableSerializable 的某些类型。不能传递任意对象。有关详细信息,请参阅 here and here

ksoap2 KvmSerializable 不是从 Serializable 派生的。必须自己序列化和反序列化。

您可以创建 SoapObject 的子类,您可以直接向其添加 Serializable。但是,您必须使用 ksoap2 API 来参与 Java Serialization,这意味着您必须实施一些代码来说明 SoapObject.

的 "internals"

另一种选择是使 SoapObject 子类实现 Parcelable 接口。实现的代码类似于自定义Java序列化。

您可以传递原始 XML 如果可用,然后在接收 Activity 中重新解析它。

作为最后的手段,上面的@RajanBhavsar 推荐了一个 JSON 字符串,这是一个合理的计划。由于 ksoap2 API 似乎使用 "indirect" 属性 模型,我不确定它是如何自动发生的。

通过意图传递它似乎有点矫枉过正。只需将其存储在可从两个活动访问的单例或静态 class 中。