【问题标题】:How to pass SoapObject from one Activity to another in an intent如何将 SoapObject 从一个 Activity 传递到另一个 Intent
【发布时间】:2015-10-25 09:42:54
【问题描述】:

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

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

【问题讨论】:

  • 您是否尝试使用 GSon 将其解析为字符串并将该字符串传递给另一个活动,然后在获取时再次转换为 SoapObject。因为我也没有使用过,但是如果你想尝试,那么我提供了代码。

标签: android android-intent ksoap2 android-ksoap2 serializable


【解决方案1】:

Activity 实例之间传递控制被视为进程间通信。 Intent 包含此“调用约定”的控制和数据参数。

因此,您可以通过的内容受到限制。 Intent 只能传递可以存储在Bundle 中的对象。这包括“值”类型、ArrayListParcelableSerializable 的某些类型。不能传递任意对象。详情请参阅herehere

ksoap2 KvmSerializable 不是从Serializable 派生的。您必须自己对其进行序列化和反序列化。

您可以创建SoapObject 的子类,并且可以直接将Serializable 添加到其中。但是,您必须使用 ksoap2 API 来参与 Java Serialization,这意味着您必须实现一些代码来说明您的 SoapObject 的“内部”。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多