将对象传递给另一个 activity(没有 Parcelable?)
Pass object to another activity (without Parcelable?)
我需要将对象 user
传递给另一个 activity。我知道我应该使用 Parcelable
,但我无法编辑 User
class,因为它是从 maven 存储库中使用的。
这里有没有其他方法可以传递 user
对象?或者如何从 Maven 存储库本地编辑 class?
您可以为此目的使用应用程序 class。
你需要的是:
- 创建一个派生自 Application 的 class。
- 在 AndroidManifest.xml 中声明 class(参见 here)
- 在其中创建一个 User 类型的对象变量(还有 getter 和 setter)。
通过以下方式在第一个活动中分配用户对象:
MyApplication app = (MyApplication) getApplication();
app.setUser(user);
通过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/
我需要将对象 user
传递给另一个 activity。我知道我应该使用 Parcelable
,但我无法编辑 User
class,因为它是从 maven 存储库中使用的。
这里有没有其他方法可以传递 user
对象?或者如何从 Maven 存储库本地编辑 class?
您可以为此目的使用应用程序 class。 你需要的是:
- 创建一个派生自 Application 的 class。
- 在 AndroidManifest.xml 中声明 class(参见 here)
- 在其中创建一个 User 类型的对象变量(还有 getter 和 setter)。
通过以下方式在第一个活动中分配用户对象:
MyApplication app = (MyApplication) getApplication(); app.setUser(user);
通过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/