Android Kotlin创建类实现Parcelable在'覆盖'中给出错误writeToParcel方法

时间:2017-09-07 09:55:45

标签: android kotlin parcelable

为了使用Parcelable,我遵循了此版本的Kotlin 1.1.4:https://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out/

在项目中添加此行

androidExtensions {
    experimental = true
}

然后定义一个类:

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

自动创建writeToParcel()和createFromParcel()方法

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

但在覆盖'中仍有错误带有消息的关键字

  

OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED:覆盖' writeToParcel'   不被允许。使用' Parceler'相反的伴侣对象

你能告诉我正确的方法吗?

修改: 是否只将默认构造函数中定义的属性添加到Parcel,而其他属性不是?我在这节课中看到了这个警告。

  

PROPERTY_WONT_BE_SERIALIZED:属性不会被序列化为   '包裹&#39 ;.添加' @ Transient'注释以删除警告

2 个答案:

答案 0 :(得分:5)

您可以放心地忽略警告,因为它只是lint检查。
现在要摆脱它只需使用@SuppressLint("ParcelCreator")

例如:

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

答案 1 :(得分:4)

确保您使用的是kotlin 1.1.4版本

无需覆盖writeToParcel / createFromParcel方法。 除非你做任何特定的事情。工作室给你错误,但你可以忽略这个错误; lint检查尚未更新以了解@Parcelize。相应的YouTrack问题在这里:

this answer

使用create class

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

然后像

那样传递它

enter image description here

将其取回

enter image description here