Android Kotlin create class implement Parcelable give an error in 'override' of writeToParcel method

有些话、适合烂在心里 提交于 2019-11-29 12:45:04

问题


To use Parcelable, I had followed this release of Kotlin 1.1.4 : https://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out/

Add this line in project

androidExtensions {
    experimental = true
}

Then define a class :

@Parcelize
class User(val firstName: String, val lastName: String) : Parcelable

The writeToParcel() and createFromParcel() methods are created automatically

override fun writeToParcel(parcel: Parcel, flags: Int) {
...
}

but still have an error in 'override' keyword with message

OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED: Overriding 'writeToParcel' is not allowed. Use 'Parceler' companion object instead

Can you show me the right way?

Edit : Does only properties defined in default constructor will be add to Parcel, and other is not? I see this warning in this class.

PROPERTY_WONT_BE_SERIALIZED: Property would not be serialized into a 'Parcel'. Add '@Transient' annotation to remove the warning


回答1:


Make sure you are using the kotlin 1.1.4 version

No need to override the writeToParcel/createFromParcel methods. Unless you doing any specific things.The studio gives you error but you can ignore this error; the lint checks haven’t yet been updated to understand @Parcelize. The corresponding YouTrack issue is here:

https://youtrack.jetbrains.com/issue/KT-19300

To use create class

Then to pass it like

To get it back




回答2:


You can safely just ignore the warning as it's only lint check.
for now to get rid of it just use @SuppressLint("ParcelCreator")

ex:

@SuppressLint("ParcelCreator")
@Parcelize
class User(val firstName: String, val lastName: String) : Parcelable


来源:https://stackoverflow.com/questions/46093364/android-kotlin-create-class-implement-parcelable-give-an-error-in-override-of

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!