java - java.lang.RuntimeException:Parcelable 在读取 Serializable 对象时遇到 IOException
问题描述
我尝试在活动之间发送以下对象
public class SerializablePlusCourtChemin implements Serializable {
public static final String FROM = "From";
public static final String TO = "Ro";
public static final String BY= "By";
private List<SerializableSalle> mSalles = new ArrayList<SerializableSalle>();
private List<SerializableMouvement> mMouvements = new ArrayList<SerializableMouvement>();
public List<SerializableSalle> getmSalles() {
return mSalles;
}
public void setmSalles(List<SerializableSalle> mSalles) {
this.mSalles = mSalles;
}
public List<SerializableMouvement> getmMouvements() {
return mMouvements;
}
public void setmMouvements(List<SerializableMouvement> mMouvements) {
this.mMouvements = mMouvements;
}
}
我得到标题中提到的异常堆栈跟踪是
RuntimeException: Parcelable encountered IOException reading a Serializable object (name = fr.cnam.nfa024.jpmena.geolocalisationindoor.bean.SerializablePlusCourtChemin)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Parcelable encountered IOException reading a Serializable object (name = fr.cnam.nfa024.jpmena.geolocalisationindoor.bean.SerializablePlusCourtChemin)
at android.os.Parcel.readSerializable(Parcel.java:2215)
at android.os.Parcel.readValue(Parcel.java:2064)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2314)
at android.os.Bundle.unparcel(Bundle.java:249)
at android.os.Bundle.getSerializable(Bundle.java:1295)
at fr.cnam.nfa024.jpmena.geolocalisationindoor.ViewCourseActivity.onCreate(ViewCourseActivity.java:35)
.............................................
Caused by: java.io.InvalidClassException: fr.cnam.nfa024.jpmena.geolocalisationindoor.bean.SerializableSalle;
Incompatible class (SUID): fr.cnam.nfa024.jpmena.geolocalisationindoor.bean.SerializableSalle: static
final long serialVersionUID =2285590632111183141L; but expected
fr.cnam.nfa024.jpmena.geolocalisationindoor.bean.SerializableSalle: static
final long serialVersionUID =-5659168454258435009L;
在将布尔值添加到 SerializableSalle之前,我没有任何问题。我刚刚添加了对SerializableSalle的可访问性,这使得:
public class SerializableSalle implements Serializable {
private String name;
private Integer identifiant;
private Boolean accessible; //La salle est elle ouverte oou bien en travaux ?
public SerializableSalle(Integer id, String name, Boolean accessible) {
this.name = name;
this.identifiant = id;
this.accessible = accessible;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getIdentifiant() {
return identifiant;
}
public void setIdentifiant(Integer identifiant) {
this.identifiant = identifiant;
}
public Boolean getAccessible() {
return accessible;
}
public void setAccessible(Boolean accessible) {
this.accessible = accessible;
}
}
- 当我从SerializableSalle中删除可访问时,问题消失了
(法语 Salle 是房间的意思)
- 有什么帮助吗?提前致谢 !!!
解决方案
推荐阅读
- python - 使用 Axes3D.plot_wireframe 和 Axes3D.scatter 绘图:线框隐藏的散点
- delphi - 避免在启用运行时主题时在透明控件中闪烁
- java - 为什么函数内部的运算符'+'不修改 * def 生成的变量?
- html - XPath:如何在相同级别的 2 个 html 标签之间获取文本?
- angular - Angular 5 - 提交时将数据从一个组件传递到另一个组件
- sparql - 如何检索维基数据中的分类详细信息
- arrays - 为动态填充的对象数组生成猫鼬模式
- php - 如何使用 Robo 将不同的数据传递给同一测试的多个实例
- c++ - 从模板继承的这个结构的细节是什么?
- python - 下载、安装包和模块