Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

like image 636
quangkid Avatar asked Sep 07 '17 09:09

quangkid


2 Answers

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

enter image description here

Then to pass it like

enter image description here

To get it back

enter image description here

like image 173
Pravin Londhe Avatar answered Sep 19 '22 15:09

Pravin Londhe


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
like image 30
humazed Avatar answered Sep 18 '22 15:09

humazed