安卓序列化的坑

来源:互联网 发布:社交软件推荐算法 编辑:程序博客网 时间:2024/06/05 08:13

朋友们,你们是否遇到过java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.yuanmu.lunbo.Data.RankingData)的异常,这是实体类序列化就有可能遇到,下面贴下我的报错信息:
04-20 14:28:45.481 21251-21251/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.yuanmu.lunbo, PID: 21251
java.lang.RuntimeException: Parcelable encountered IOException writing

serializable object (name = com.example.yuanmu.lunbo.Data.RankingData)
at android.os.Parcel.writeSerializable(Parcel.java:1394)
at android.os.Parcel.writeValue(Parcel.java:1341)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:644)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1034)
at android.os.Parcel.writeBundle(Parcel.java:669)
at android.content.Intent.writeToParcel(Intent.java:7723)
at android.app.ActivityManagerProxy.startActivity

(ActivityManagerNative.java:2627)
at android.app.Instrumentation.execStartActivity

(Instrumentation.java:1558)
at android.app.Activity.startActivityForResult(Activity.java:3830)
at

android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult

(FragmentActivity.java:75)
at android.support.v4.app.ActivityCompatJB.startActivityForResult

(ActivityCompatJB.java:31)
at android.support.v4.app.ActivityCompat.startActivityForResult
(ActivityCompat.java:163) at
android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:943) at android.support.v4.app.FragmentActivity
HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1057)atandroid.support.v4.app.Fragment.startActivity(Fragment.java:928)atandroid.support.v4.app.Fragment.startActivity(Fragment.java:917)atcom.example.yuanmu.lunbo.Fragment.RankingFragment.onClick(RankingFragment.java:429)atandroid.view.View.performClick(View.java:4909)atandroid.view.ViewPerformClick.run(View.java:20390) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5860) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInitMethodAndArgsCaller.run(ZygoteInit.java:1019)atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:814)Causedby:java.io.NotSerializableException:com.example.yuanmu.lunbo.Data.RankingDataResultBean at java.io.ObjectOutputStream.writeNewObject
(ObjectOutputStream.java:1344) at java.io.ObjectOutputStream.writeObjectInternal
(ObjectOutputStream.java:1651) at java.io.ObjectOutputStream.writeObject
(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject

下面贴下我的实体类,你们看看就明白了:
public class RankingData implements Serializable {
private String type;
private List result;
public static class ResultBean {
private String age;
private String constellation;
private int countphoto;
}
}

所以序列化实体类的时候,要想在Activity之间传递数据必须所有的内容都实现serializable接口才行,否则就出错啦。你们注意到了没有,我的实体类List result这个是我自定义的,它没实现Serializable接口,所以代码要改成这样:
public static class ResultBean implements Serializable {
private String age;
private String constellation;
private int countphoto;
}
自定义的 ResultBean也要实现Serializable接口,各位大大们明白没有啊,开发有啥不明白的欢迎来我博客讨论,我会给你们解答,本人做开发已经5年

0 0