2016-02-24 14 views
0

我已經在其中一個模型類中使用了Calendar對象。我得到的例外Android日曆對象問題java.lang.IllegalArgumentException:無字段'serialVersionOnStream'類型爲int

0 java.lang.IllegalArgumentException: no field 'serialVersionOnStream' of type int 
1  at java.io.EmulatedFields.findMandatorySlot(EmulatedFields.java:188) 
2  at java.io.EmulatedFields.put(EmulatedFields.java:458) 
3  at java.io.EmulatedFieldsForDumping.put(EmulatedFieldsForDumping.java:126) 
4  at java.util.Calendar.writeObject(Calendar.java:1389) 
+0

能否請您發佈您的代碼? – Tapani

+0

@tapani我從一個活動傳遞數據模型類(其中包含日曆對象引用),而這種情況主要發生在Android 5.1.1上,我得到這個問題 –

回答

0

我很快看了Android 5.1.1源代碼,但沒有找到一個原因。無論如何,可能是一些Android源文件中的一個錯誤。如果您不需要時區信息,請使用long毫秒時間戳,而不是Calendar。通過調用getTimeInMillis,您可以從Calendar對象中獲取毫秒。

https://android.googlesource.com/platform/libcore.git/+/android-5.1.1_r34/luni/src/main/java/java/io/EmulatedFields.java

https://android.googlesource.com/platform/libcore.git/+/android-5.1.1_r34/luni/src/main/java/java/util/Calendar.java

+0

我看到這個例外發生在許多日曆對象的字段。但它並不總是會發生。 @Tapani –

+0

最好在android –

+0

中使用日期或日曆(公曆日曆)日期是隻讀的,沒有時區或公曆日曆信息。此外,日曆有更復雜的方法。但是,當您需要對日期執行某些操作時,您總是可以創建一個Calendar對象,然後在完成之後獲取Date對象。 – Tapani