我在Android版本中保存/加载ArrayList<HashMap<String, Object>>
时遇到问题。我一直在Google和SO上搜索解决方案好几天,我尝试过的一切都没有用。
这是我得到的错误:
java.io.InvalidClassException: org.apache.harmony.luni.internal.util.ZoneInfo; 不兼容的类(SUID): org.apache.harmony.luni.internal.util.ZoneInfo: static final long serialVersionUID = -8334108180457627365L;但是预计org.apache.harmony.luni.internal.util.ZoneInfo: static final long serialVersionUID = 2415005675580187790L;
我在包含ObjectInputStream和ObjectOutputStream的类中尝试了implement Serializable
和static final long serialVersionUID = 1L
,但错误没有改变。进一步的测试表明,在遇到相同问题的两个不同应用程序中,错误甚至没有改变,错误中的SUID完全取决于文件保存或尝试加载的Android版本。
我也试过Parcelable但没有成功。
如何在没有此问题的情况下保存和加载ArrayList?
以下是我试过的ROM的SUID:
G1 1.6(CSDI V4 por Super @ tmel): - 1970599206206877388L
Droid 2.2(CyanogenMod 6.1.2): - 8334108180457627365L
机器人2.3(CyanogenMod 7 nightly 12):2415005675580187790L
答案 0 :(得分:3)
您的地图中有java.util.Calendar
或java.util.Timezone
作为值,不是吗?将其替换为任何其他格式应该没问题,例如:
Calendar.getTimeInMillis()
或
Timezone.getRawOffset()
由于某些原因,Dalvik在'ZoneInfo'类中更改了serializationId。
答案 1 :(得分:0)
我已经断定,实际上(5月/ 6月)回来了,唯一的办法是将数据保存在数据库中,无论如何这都是理想的方式。
我发现数据库起初有点令人生畏,但是一旦你理解了如何使用它们就会很棒。我强烈建议任何想要存储数据的人,至少在大多数情况下。这是让我开始使用数据库的视频:http://youtube.com/watch?v=v61A90qlK9s