2014-11-29 10 views
10

Chcę przekazać mój obiekt ArrayList do innego działania przy użyciu obiektu DataWrapper, który implementuje Serializable.
Połączyłem się z odpowiedzią podaną tutaj: Pass arraylist of user defined objects to Intent android.
Rozpoczynam kolejną aktywność z MPAndroidChart biblioteki PieChart 's OnChartGestureListener(). W ten sposób zdałem ArrayList obiekt threadList:Wywołanie java.lang.RuntimeException: Sporadycznie napotkany obiekt IOException zapisujący obiekt serializowany w systemie Android przekazujący obiekt ArrayList

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 wdrożone klasę DataWrapper tak:

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; 
    } 
} 

i uzyskiwanie błąd Parcelable encountered IOException writing serializable object. Oto moja 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$11.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 

Śledziłem odpowiedź (przekazać przedmiotów list tablica) w linku powyżej, ale otrzymuję błąd, co jest przyczyną błędu i jak go usunąć?

Odpowiedz

32

Twoja klasa OneThread również powinna implementować Serializable. Wszystkie podklasy i wewnętrzne podklasy muszą implementować Serializable.

+0

Próbowałem już wcześniej, ale dał błąd. –

+10

Moja klasa 'OneThread' miała inne pole' ArrayList 'robienie' Cls2' również z serializacją rozwiązało to. –

+0

@mohammed, dzięki za twoją notatkę, aby uczynić klasy pól serializowanymi;) –

Powiązane problemy