将对象传递给另一个 activity(没有 Parcelable?)

Pass object to another activity (without Parcelable?)

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

这里有没有其他方法可以传递 user 对象?或者如何从 Maven 存储库本地编辑 class?

您可以为此目的使用应用程序 class。 你需要的是:

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

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

  5. 通过activity在其他activity中检索对象:

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

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

本题可读here

希望对您有所帮助。

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

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

P.S。使用 google 的 Gson class 让这变得非常简单。 https://code.google.com/p/google-gson/