AndroidRuntime error: Parcel: unable to marshal value
Ошибка AndroidRuntime: Посылка: не удается маршалировать значение
Я пытаюсь передать хэш-карту новому действию, используя функцию intent.puExtra . При запуске отладчика кажется, что он добавляет HashMap без проблем, однако при вызове startActivty() я получаю ошибку времени выполнения, в которой указано, что Посылка: не удается маршалировать значение com.AppName.Ликер.
Liquor - это пользовательский класс, который я создал, и я полагаю, что он в сочетании с хэш-картой вызывает проблему. Если я передаю строку, а не свою хэш-карту, она без проблем загружает следующее действие.
Основное действие
lv.setOnItemClickListener(newOnItemClickListener() { publicvoidonItemClick(AdapterView<?> parent, View view, int position, long id) {
Когда ошибка времени выполнения существует, она никогда не попадает в класс sub activity. Итак, я почти уверен, что проблема существует в добавлении HashMap к intent, и, основываясь на ошибке, я полагаю, что причиной является мой класс Liquor , но я не могу понять почему.
Мы будем очень признательны за вашу помощь. Спасибо!
Переведено автоматически
Ответ 1
Ваш HashMap сам по себе сериализуем, но сериализуем ли Bottle класс? В противном случае он не будет сериализован и будет выдавать ошибки во время выполнения. Заставьте Bottle класс реализовать java.io.Serializable интерфейс
Ответ 2
Я получал эту ошибку, потому что мой класс не был Serializable. Чтобы сделать мой класс сериализуемым, мне пришлось добавить : Serializable в конце класса, чтобы сделать сериализуемым. Точно так же, как это
classShirt(val price: Double, val discountedPrice: Double) : Serializable
Обязательно импортируйте Serializable следующим образом