Переопределение «writeToParcel» не допускается. Вместо этого используйте компаньон «Parceler»

Я использовал плагин Jetbrains для создания Android Parcelable класса в Котлине и получил эти два исключения (не предупреждения, в отличие от здесь , поэтому проект не строится):

CREATOR_DEFINITION_IS_NOT_ALLOWED: определение CREATOR не разрешено. Вместо этого используйте компаньон «Parceler».

OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED: переопределение «writeToParcel» не допускается. Вместо этого используйте компаньон «Parceler».

Я просмотрел похожие вопросы и не нашел решения для моего дела.

Моя версия Kotlin: 1.1.51 (согласно Gradle), но эта особенность была добавлена ​​в 1.1.4: https://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out /

Автоматически сгенерированный код:

@Parcelize data class User( val id: Int, val cardId: String, val coefficent: Float = 1.0F, val name: String, val surname: String = "" ) : Parcelable { constructor(source: Parcel) : this( source.readInt(), source.readString(), source.readFloat(), source.readString(), source.readString() ) companion object { @JvmField val CREATOR: Parcelable.Creator<User> = object : Parcelable.Creator<User> { override fun createFromParcel(source: Parcel): User = User(source) override fun newArray(size: Int): Array<User?> = arrayOfNulls(size) } } override fun describeContents() = 0 override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) { writeInt(id) writeString(cardId) writeFloat(coefficent) writeString(name) writeString(surname) } } 

    Вы можете использовать @Parcelize чтобы сообщить компилятору добавить методы или реализовать их явно (сгенерированный плагином IDEA или нет, это не имеет значения). Не имеет смысла иметь обоих сразу.

    Вы можете настроить логику, используемую @Parcelize , но она по-прежнему не выполняется путем переопределения методов, но, как описано в https://github.com/Kotlin/KEEP/blob/master/proposals/extensions/android-parcelable.md#custom -специфики (это то, что вместо «вспомогательного объекта» «Использовать» Parceler означает «часть сообщения»).

    Intereting Posts
    MissingMethodInvocationException тестирование открытого класса в Котлине Как установить функцию прослушивания кликов и передать значение поля edittext для просмотра модели с использованием привязки данных Невозможно добавить фрагменты с помощью функции расширения Kotlin Как заставить безопасных строителей Kotlin работать в Scala? Getpreferences не работает в фрагменте Как сгенерировать файл kotlin из обработчика аннотаций? Является ли я единственным автоответчиком IDEA, который не работает в Котлине? Внедрить только один метод из интерфейса в анонимном классе @Parcelize аннотации toghether с наследованием Ошибка сборки Kotlin в Android Studio Ярлык logd не работает в Intellij с Kotlin Может ли поле быть перенесено в не нулевую версию? Не удалось получить вал в Котлине Ошибка при использовании объекта для реализации пустого списка Java не разрешает окончательные методы по умолчанию .. но делает Котлин?