2011-03-04 56 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

相關問題