2014-11-29 13 views
10

Tôi muốn chuyển đối tượng ArrayList của mình đến một hoạt động khác, bằng cách sử dụng DataWrapper triển khai Serializable.
Tôi đã theo dõi câu trả lời được cung cấp tại đây: Pass arraylist of user defined objects to Intent android.
Tôi đang bắt đầu Hoạt động khác từ MPAndroidChart thư viện PieChart 's OnChartGestureListener(). Đây là cách tôi đã thông qua đối tượng của tôi ArrayList threadList:java.lang.RuntimeException: Parcelable gặp IOException viết đối tượng serializable trong Android đi qua đối tượng 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); 
} 
//..... 
} 

tôi thực hiện các lớp DataWrapper như thế này:

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

Và nhận được lỗi Parcelable encountered IOException writing serializable object. Đây là Logcat tôi:

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 

Tôi làm theo các câu trả lời (để vượt qua đối tượng array list) trong liên kết ở trên nhưng nhận được Lỗi, những gì đang gây ra lỗi và làm thế nào để loại bỏ nó?

Trả lời

32

OneThread Lớp học của bạn cũng nên triển khai Serializable. Tất cả các lớp con và các lớp con bên trong phải thực hiện Serializable.

+0

Tôi đã thử điều này trước đây, nhưng đã xảy ra lỗi. –

+10

Lớp 'OneThread' của tôi có một trường khác' ArrayList 'làm' Cls2' cũng có thể tuần tự hóa được. –

+0

@mohammed, cảm ơn ghi chú của bạn để làm cho các lớp trường cũng có thể tuần tự hóa được); –

Các vấn đề liên quan