【问题标题】:Pass object to another activity (without Parcelable?)将对象传递给另一个活动(没有 Parcelable?)
【发布时间】:2015-08-26 10:47:07
【问题描述】:

我需要将对象 user 传递给另一个活动。我知道我应该使用Parcelable,但我无法编辑User 类,因为它是从maven 存储库中使用的。

我可以通过其他方式传递user 对象吗?或者如何从 maven 仓库本地编辑类?

【问题讨论】:

  • 您可以使用带有粘性事件的事件总线
  • 我认为你应该读取数组列表中的所有用户,创建一个用户类型的变量,获取/查找/匹配你想要传递给另一个活动的用户对象(最好使用 for 循环) arraylist 中的项目,一旦获得/找到/匹配用户 - 将值分配给上面创建的变量,然后您可以调用任何方法并将变量作为参数传递给另一个活动。

标签: java android android-studio jreddit


【解决方案1】:

您可以为此目的使用 Application 类。 你需要的是:

  1. 创建一个派生自 Application 的类。
  2. 在AndroidManifest.xml中声明类(见here)
  3. 在其中创建一个 User 类型的对象变量(还有 getter 和 setter)。
  4. 通过以下方式在第一个活动中分配用户对象:

    MyApplication app = (MyApplication) getApplication(); app.setUser(user);

  5. 通过以下方式在其他活动中检索对象:

    MyApplication app = (MyApplication) getApplication(); User user = app.getUser();

但是:请注意,在您重新启动应用程序后(进入后台并再次打开它),将创建一个新的 Application 对象,其中 User 为空,然后请注意。

这个问题可以阅读here。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您可以将对象序列化为某种字符串表示形式。最简单的方法是将对象转换为 JSON 字符串,通过 Intent 将字符串传递给其他活动,然后将字符串转换回原始对象。

    【讨论】:

      【解决方案3】:

      我所做的只是将对象转换为 Json,然后使用 Intent 作为字符串发送。那你就抓不到解析Json了。

      附:使用谷歌的 Gson 类使这变得非常容易。 https://code.google.com/p/google-gson/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多