【发布时间】:2017-05-04 16:06:18
【问题描述】:
我想保存视图“ArrayList”的 ArrayList 的内容。我覆盖了方法“onSaveInstanceState”,如下面的代码所示,但在运行时我收到下面发布的 logcat 错误。 请让他们知道如何在包中设置 View 对象列表
代码:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.w(TAG, "onSaveInstanceState");
if (this.mListViews != null && this.mListViews.size() > 0) {
outState.putSerializable(KEY_LIST_OF_VIEWS, this.mListViews);
}
}
logcat
java.lang.RuntimeException: Parcel: unable to marshal value android.widget.ImageView{8787bd0 V.ED..... ........ 20,20-1580,2247}
at android.os.Parcel.writeValue(Parcel.java:1419)
at android.os.Parcel.writeList(Parcel.java:760)
at android.os.Parcel.writeValue(Parcel.java:1366)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:687)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330)
at android.os.Bundle.writeToParcel(Bundle.java:1079)
at android.os.Parcel.writeBundle(Parcel.java:712)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3753)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4704)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7331)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
【问题讨论】:
-
可以发一下arraylist的pojo类吗?
-
不要把 Views 放到 Bundle ... 只放数据
-
@Selvin 这是一个视图列表..每个项目都是一个视图
-
然后呢?你是根据一些数据制作的......发送数据而不是视图......你知道
onSaveInstanceState不是用于保存持久数据? -
Selvin 也是对的,您可以只将原始数据类型放入 bundle 而不是视图
标签: android android-intent bundle parcelable serializable