Проблема вашего подхода в том, что значение Long
может быть null
, но методы Parcel
принимают / возвращают значения только примитивного типа данных long
, см. Документацию дляподробности.Таким образом, вам нужен обходной путь для сохранения значения Long
.
Я хотел бы использовать int
, чтобы указать, является ли мое Long
значение null
(вы можете хранить только boolean
массивов без единственных boolean
значений) и long
для хранениячисловое значение, если оно не:
Запись в Parcel
int indicator = (aLongObject == null) ? 0 : 1;
long number = (aLongObject == null) ? 0 : aLongObject;
dest.writeInt(indicator);
dest.writeLong(number);
Чтение из Parcel
// NOTE: reading must be in the same order as writing
Long aLongObject;
int indicator = in.readInt();
long number = in.readLong();
if(indicator == 0){
aLongObject = null;
}
else{
aLongObject = number;
}