Передача сериализованного объекта между приложениями - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь передать сериализованный объект между приложениями, используя Bundle, где в одном приложении объект находится на Java, тогда как в другом приложении тот же объект находится в Kotlin.

Передачаobject -

   Bundle bundle = new Bundle();  
    bundle.putSerializable(Constants.KEY_USER_PROFILE, getUserProfile());

Для извлечения объекта -

 Profile profile = (Profile) bundle.getSerializable(Constants.KEY_USER_PROFILE);

Во втором случае класс профиля находится на языке котлина, тогда как в первом - на языке Java

Я получаю следующее исключение при передаче объекта

java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {MainActivity}: java.lang.RuntimeException: Parcelableобнаружен IOException при чтении объекта Serializable (name = base.model.user.Profile)
Вызвано: java.lang.RuntimeException: Parcelable обнаружен IOException при чтении объекта Serializable (name = base.model.user.Profile)

                                                                           Caused by: java.io.InvalidClassException: base.model.user.Profile; local class incompatible: stream classdesc serialVersionUID = 7285398503547917474, local class serialVersionUID = -1011142074531890510

1 Ответ

0 голосов
/ 01 июня 2018

Это потому, что serialVersionUID отличается в обоих случаях. Он должен быть одинаковым в сериализованном и десериализованном классе, чтобы сериализация работала.Поместите эту строку в оба ваших класса

public static final long serialVersionUID = 42L;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...