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
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With