2011-03-04 52 views
1

我在安卓版本中保存/加载ArrayList<HashMap<String, Object>>时出现问题。我一直在Google和SO上搜索解决方案几天,我尝试过的一切都无法工作。在不同的Android版本中保存/加载ArrayList

这是我得到的错误:

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;

我试过implement Serializablestatic final long serialVersionUID = 1L含有的ObjectInputStream和ObjectOutputStream的类,但误差不会改变。进一步的测试表明,这个错误甚至在两个不同的应用程序遇到同样的问题时也不会改变,而且错误中的SUID完全取决于该文件已保存或试图加载的Android版本。

我也尝试Parcelable没有成功。

如何在不存在此问题的情况下保存并加载ArrayList?

这里是SUID的对ROM的我已经试过:
G1 1.6(CSDI V4 POR超级@ tmel):-1970599206206877388L
Droid的2.2(CyanogenMod的6.1.2):-8334108180457627365L
Droid的2.3(CyanogenMod的7每晚12):2415005675580187790L

回答

0

我已经总结了一段时间(5月/ 6月),唯一的解决方法是将数据保存到数据库中,这是最好的方法。

我发现数据库起初有点令人望而却步,但一旦你明白如何使用它们,它们就非常棒。我强烈建议任何想存储数据的人,至少在大多数情况下。这是让我开始使用数据库的视频:http://youtube.com/watch?v=v61A90qlK9s

3

你有java.util.Calendarjava.util.Timezone作为价值,是不是?与任何其他形式代替应当确定,例如:

Calendar.getTimeInMillis()

Timezone.getRawOffset()

对于一些原因,Dalvik在'ZoneInfo'类中更改serializationId。

+0

它可以工作,但对于已有的具有这些数据类型的序列化数据,它仍然是一个问题。 – 2017-10-15 15:45:57

相关问题