java.lang.RuntimeException: Parcelable 遇到 IOException 在 Android 中写入可序列化对象传递 ArrayList 对象

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27204324/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 03:58:07  来源:igfitidea点击:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object in Android passing ArrayList object

javaandroidserializationarraylistmpandroidchart

提问by Mohammed Ali

I want to pass my ArrayList object to another activity, using a DataWrapper that implements Serializable.
I followed the answer provided here: Pass arraylist of user defined objects to Intent android.
I am starting the another Activity from MPAndroidChartlibrary PieChart's OnChartGestureListener(). This is how I passed my ArrayList object threadList:

我想将我的 ArrayList 对象传递给另一个活动,使用实现Serializable.
我按照此处提供的答案进行操作:将用户定义对象的数组列表传递给 Intent android
我正在从MPAndroidChartPieChartOnChartGestureListener(). 这就是我传递 ArrayList 对象的方式threadList

mChart.setOnChartGestureListener(new OnChartGestureListener() {
@Override
public void onChartSingleTapped(MotionEvent me) {
    Intent intent = new Intent(MainActivity.this, TextersSmsActivity.class);
    intent.putExtra("threadList", new DataWrapper(threadList));
    MainActivity.this.startActivity(intent);
}
//.....
}

I implemented the DataWrapper class like this:

我像这样实现了 DataWrapper 类:

public class DataWrapper implements Serializable {
private static final long serialVersionUID = 100L;
private ArrayList<OneThread> threadList;

   public DataWrapper(ArrayList<OneThread> threadList) {
      this.threadList = threadList;
   }

   public ArrayList<OneThread> getThreadList() {
      return threadList;
   }
}

And getting the Parcelable encountered IOException writing serializable objecterror. Here is my Logcat:

并得到Parcelable encountered IOException writing serializable object错误。这是我的 Logcat:

11-29 21:12:09.919: E/MessageQueue-JNI(21550): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.myproj.DataWrapper)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.os.Parcel.writeSerializable(Parcel.java:1316)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.os.Parcel.writeValue(Parcel.java:1264)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.os.Bundle.writeToParcel(Bundle.java:1692)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.os.Parcel.writeBundle(Parcel.java:636)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.content.Intent.writeToParcel(Intent.java:7013)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2076)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.Activity.startActivityForResult(Activity.java:3424)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.Activity.startActivityForResult(Activity.java:3385)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.Activity.startActivity(Activity.java:3627)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.Activity.startActivity(Activity.java:3595)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.myproj.MainActivity.onChartSingleTapped(MainActivity.java:967)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.github.mikephil.charting.listener.PieRadarChartTouchListener.onSingleTapUp(PieRadarChartTouchListener.java:89)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.GestureDetector.onTouchEvent(GestureDetector.java:595)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.github.mikephil.charting.listener.PieRadarChartTouchListener.onTouch(PieRadarChartTouchListener.java:40)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.github.mikephil.charting.charts.PieRadarChartBase.onTouchEvent(PieRadarChartBase.java:56)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.View.dispatchTouchEvent(View.java:7706)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.View.dispatchPointerEvent(View.java:7886)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5532)
11-29 21:12:09.919: E/MessageQueue-JNI(21550):  at android.view.ViewRootImpl.doP

I followed the answer (to pass array list objects) in the link above but getting the Error, what is causing the error and how to remove it?

我按照上面链接中的答案(传递数组列表对象)但得到了错误,是什么导致了错误以及如何删除它?

采纳答案by MathanG

Your OneThreadClass also should implement Serializable. All the sub classes and inner sub classes must implement Serializable.

您的OneThreadClass 也应该实现Serializable. 所有子类和内部子类都必须实现Serializable.