如何在意图中将 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" 类型、ArrayList
、Parcelable
和 Serializable
的某些类型。不能传递任意对象。有关详细信息,请参阅 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 中。
我需要在 intent
中将 SoapObject
从一个 Activity
传递给另一个 Activity
。这可能吗?
我看不到它实现了 Serializable
,但它确实实现了 KvmSerializable
(尽管我不知道它是什么)。
在 Activity
个实例之间传递控制被视为进程间通信。 Intent
包含此 "calling convention" 的控制和数据参数。
因此,您可以通过的内容受到限制。 Intent
只能传递可存储在 Bundle
中的对象。这包括 "value" 类型、ArrayList
、Parcelable
和 Serializable
的某些类型。不能传递任意对象。有关详细信息,请参阅 here and here。
ksoap2 KvmSerializable
不是从 Serializable
派生的。必须自己序列化和反序列化。
您可以创建 SoapObject
的子类,您可以直接向其添加 Serializable
。但是,您必须使用 ksoap2 API 来参与 Java Serialization,这意味着您必须实施一些代码来说明 SoapObject
.
另一种选择是使 SoapObject
子类实现 Parcelable
接口。实现的代码类似于自定义Java序列化。
您可以传递原始 XML 如果可用,然后在接收 Activity
中重新解析它。
作为最后的手段,上面的@RajanBhavsar 推荐了一个 JSON 字符串,这是一个合理的计划。由于 ksoap2 API 似乎使用 "indirect" 属性 模型,我不确定它是如何自动发生的。
通过意图传递它似乎有点矫枉过正。只需将其存储在可从两个活动访问的单例或静态 class 中。