在应用程序之间传递序列化对象

时间:2018-06-01 08:50:20

标签: android serialization kotlin

我尝试使用Bundle在应用程序之间传递序列化对象,其中在一个应用程序中,对象是Java,而在另一个应用程序中,同一个对象在Kotlin中。

传递对象 -

   Bundle bundle = new Bundle();  
    bundle.putSerializable(Constants.KEY_USER_PROFILE, getUserProfile());

获取对象 -

 Profile profile = (Profile) bundle.getSerializable(Constants.KEY_USER_PROFILE);

在第二种情况下,配置文件类使用kotlin语言,而第一种情况是使用java

我在传递对象时遇到异常

java.lang.RuntimeException:无法启动活动ComponentInfo {MainActivity}:java.lang.RuntimeException:Parcelable遇到IOException,读取Serializable对象(name = base.model.user.Profile)
                                                                                                                                                                引起:java.lang.RuntimeException:Parcelable在读取Serializable对象时遇到IOException(name = base.model.user.Profile)

                                                                           Caused by: java.io.InvalidClassException: base.model.user.Profile; local class incompatible: stream classdesc serialVersionUID = 7285398503547917474, local class serialVersionUID = -1011142074531890510

1 个答案:

答案 0 :(得分:1)

这是因为serialVersionUID在两种情况下都不同,序列化和反序列化类应该相同,以便序列化工作。把这一行放在你的两个班级

public static final long serialVersionUID = 42L;