Android — проблема с сериализуемым интерфейсом

Я использую интерфейс Serializable для передачи объекта из одного действия в другое. Я использую putExtra на стороне отправителя и getSerializable на стороне получателя. Все работает нормально, но я получил (впервые) следующий отчет об ошибке:

java.lang.RuntimeException: Parcelable столкнулся с IOException при чтении объекта Serializable

Я не понимаю, почему было сгенерировано это исключение, поскольку я использую getSerializable, а не getParcelable.

Я знаю, что вместо этого мне следует реализовать интерфейс Parcelable, потому что он был разработан специально для Android (и это то, что я в конечном итоге сделаю), но я хочу понять, почему я получаю эту ошибку.

Спасибо!


person Amokrane Chentir    schedule 23.09.2011    source источник


Ответы (1)


Parcelable упоминается в этой ошибке, потому что Intent, который вы отправляете от одного Activity к другому, имеет Bundle внутри, а этот Bundle является Parcelable. Когда вы вызываете Intent.putExtra(), это дополнение добавляется к внутреннему Bundle. Когда Intent передается между действиями, его Bundle преобразуется в массив байтов и из него, как и ваш объект Serializable.

Но я не знаю, почему возникает эта ошибка. Возможно, это из-за какой-то ошибки в реализации writeObject()/readObject().

person Michael    schedule 23.09.2011