1
我正在使用對的數組列表,並試圖通過它來顯示錯誤對話框。 錯誤對話框顯示了沒有任何問題,但是當網頁被暫停時,我得到下面的錯誤包裹:無法封送價值android.util.Pair
E/AndroidRuntime(23733): Process: com.comcast.xfinityhome.tps, PID: 23733
E/AndroidRuntime(23733): java.lang.RuntimeException: Parcel: unable to marshal value [email protected]
E/AndroidRuntime(23733): at android.os.Parcel.writeValue(Parcel.java:1337)
E/AndroidRuntime(23733): at android.os.Parcel.writeList(Parcel.java:711)
E/AndroidRuntime(23733): at android.os.Parcel.writeValue(Parcel.java:1284)
E/AndroidRuntime(23733): at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
E/AndroidRuntime(23733): at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
E/AndroidRuntime(23733): at android.os.Bundle.writeToParcel(Bundle.java:1096)
E/AndroidRuntime(23733): at android.os.Parcel.writeBundle(Parcel.java:663)
E/AndroidRuntime(23733): at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:136)
ArrayList<Pair> errorData = new ArrayList<>(2);
errorData.add(Pair.create("Value", "123"));
errorData.add(Pair.create("name", "number"));
showErrorDialog(...., errorData);
這是預期的。在期望(但不檢查)可序列化數據的地方使用不可序列化的數據。改爲嘗試一個地圖。 – zapl
但它已被設置爲可串行化到它在Bundle中傳遞的片段。 NewDialogFragment fragment = new NewDialogFragment(); Bundle args = new Bundle(); args.putSerializable(ERROR_DATA,errorData); fragment.setArguments(參數); – user3722531
'ArrayList'本身就是這樣,這就是爲什麼它沒有抱怨。但是沒有檢查列表中的所有元素(直到它實際嘗試序列化它們)。而http://developer.android.com/reference/android/util/Pair.html不是。應該工作的是用'Map替換'List >' –
zapl