Android之提示java.lang.RuntimeException: Parcel: unable to marshal value Image问题

水深无声 2021-09-24 04:22 353阅读 0赞

1 问题

使用Intent携带数据(putExtra)跳转activity,提示如下错误

  1. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: Process: com.appsinnova.android.keepshare, PID: 16194
  2. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: java.lang.RuntimeException: Parcel: unable to marshal value Image{id='0', type='null', createTime='null', urls=ImageUrl{raw='/storage/emulated/0/images/20200409_223150.jpg', full='null', regular='null', small='null', thumb='null'}, date='null', isSelect=false}
  3. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1680)
  4. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Parcel.writeList(Parcel.java:979)
  5. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1627)
  6. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Parcel.writeArrayMapInternal(Parcel.java:891)
  7. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1579)
  8. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Bundle.writeToParcel(Bundle.java:1233)
  9. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Parcel.writeBundle(Parcel.java:931)
  10. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.content.Intent.writeToParcel(Intent.java:10037)
  11. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3636)
  12. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1669)
  13. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4762)
  14. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
  15. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4691)
  16. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
  17. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at com.skyunion.android.base.RxBaseActivity.startActivityForResult(RxBaseActivity.java:372)
  18. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5081)
  19. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5049)
  20. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at com.skyunion.android.base.RxBaseActivity.startActivity(RxBaseActivity.java:366)
  21. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at com.appsinnova.android.keepshare.account.MyLoveActivity.imageClick(MyLoveActivity.kt:450)
  22. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at com.appsinnova.android.keepshare.account.favorite.adapter.MyFavoriteAdapter$4.onClick(MyFavoriteAdapter.java:295)
  23. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.view.View.performClick(View.java:6724)
  24. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.view.View.performClickInternal(View.java:6682)
  25. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.view.View.access$3400(View.java:797)
  26. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.view.View$PerformClick.run(View.java:26473)
  27. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873)
  28. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
  29. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.os.Looper.loop(Looper.java:226)
  30. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7223)
  31. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
  32. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
  33. 04-18 22:42:49.664 16194 16194 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
  34. 04-18 22:42:49.672 601 642 I vendor.mediatek.hardware.power@2.1-impl: notifyAppState_2_1 pack:com.appsinnova.android.keepshare, act:com.appsinnova.android.keepshare, pid:16194, uid:10296, state:3

然后我在这类的子类里面添加实现Serializable接口

  1. implements Serializable

然后运行依然报错

  1. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.appsinnova.android.keepshare.data.net.model.FavoriteModel$Image)
  2. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeSerializable(Parcel.java:1730)
  3. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1678)
  4. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeList(Parcel.java:979)
  5. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeValue(Parcel.java:1627)
  6. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeArrayMapInternal(Parcel.java:891)
  7. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1579)
  8. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Bundle.writeToParcel(Bundle.java:1233)
  9. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeBundle(Parcel.java:931)
  10. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.content.Intent.writeToParcel(Intent.java:10037)
  11. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3636)
  12. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1669)
  13. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4762)
  14. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
  15. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4691)
  16. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
  17. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at com.skyunion.android.base.RxBaseActivity.startActivityForResult(RxBaseActivity.java:372)
  18. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5081)
  19. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5049)
  20. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at com.skyunion.android.base.RxBaseActivity.startActivity(RxBaseActivity.java:366)
  21. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at com.appsinnova.android.keepshare.account.MyLoveActivity.imageClick(MyLoveActivity.kt:450)
  22. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at com.appsinnova.android.keepshare.account.favorite.adapter.MyFavoriteAdapter$4.onClick(MyFavoriteAdapter.java:295)
  23. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.view.View.performClick(View.java:6724)
  24. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.view.View.performClickInternal(View.java:6682)
  25. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.view.View.access$3400(View.java:797)
  26. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.view.View$PerformClick.run(View.java:26473)
  27. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873)
  28. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
  29. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Looper.loop(Looper.java:226)
  30. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7223)
  31. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
  32. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
  33. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
  34. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: Caused by: java.io.NotSerializableException: com.appsinnova.android.keepshare.data.net.model.FavoriteModel$ImageUrl
  35. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
  36. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
  37. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
  38. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
  39. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
  40. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
  41. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: at android.os.Parcel.writeSerializable(Parcel.java:1725)
  42. 04-18 22:47:36.958 19445 19445 E AndroidRuntime: ... 31 more

很明显啊,最外面的类也需要实现 Serializable接口,改了还是有问题,因为它的子类里面的子类也需要实现这个Serializable接口

#

#

2 解决办法

在这个类的外面被包裹的类和它的子类都实现 Serializable接口就可以了

发表评论

表情:
评论列表 (有 0 条评论,353人围观)

还没有评论,来说两句吧...

相关阅读