【发布时间】:2015-06-12 19:52:44
【问题描述】:
我一直在尝试将 array 的对象从一个活动传递到另一个活动。我一直在四处寻找,看来您的对象必须实现Parcelable 或Serializable。 (这对我来说没有多大意义。我不知道为什么你可以将对象数组传递给putExtra())。我不是想传入一个特定的 int 或 String,而是一组让我们说人对象的数组。但我一直有麻烦。我要传入的对象数组是一个包含bitmap 和一些字符串的对象数组。我试图让我的对象同时实现 Parcelable 和 Serializable 但我不断收到错误。这是我在实现 Serializable 时遇到的错误。有人有任何提示吗?
03-26 20:35:53.886: E/AndroidRuntime(30066): FATAL EXCEPTION: main
03-26 20:35:53.886: E/AndroidRuntime(30066): Process: com.example.test, PID: 30066
03-26 20:35:53.886: E/AndroidRuntime(30066): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.test.Person)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.os.Parcel.writeSerializable(Parcel.java:1316)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.os.Parcel.writeValue(Parcel.java:1264)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.os.Bundle.writeToParcel(Bundle.java:1692)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.os.Parcel.writeBundle(Parcel.java:636)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.content.Intent.writeToParcel(Intent.java:7414)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2289)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1437)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.app.Activity.startActivityForResult(Activity.java:3511)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.app.Activity.startActivityForResult(Activity.java:3472)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.app.Activity.startActivity(Activity.java:3714)
03-26 20:35:53.886: E/AndroidRuntime(30066): at android.app.Activity.startActivity(Activity.java:3682)
03-26 20:35:53.886: E/AndroidRuntime(30066): at com.example.test.MainActivity$1.onItemClick(MainActivity.java:54)
【问题讨论】:
-
"...object 必须实现 Parcelable 或 Serializable。(这对我来说没有多大意义。" :如果您考虑一下,这完全有道理。使用
startActivity(...)不仅仅用于在您自己的应用程序中启动另一个Activity,并且可能会导致启动第3 方应用程序。由于您的对象存在于您自己的进程中,您需要序列化或打包它们才能通过将它们从您的流程中转移到另一个流程中。
标签: android android-intent android-activity