在我的Android应用中,我想向我的Intent添加一个Bundle,其中包括如下所述的Place
对象。由于可序列化很慢并且不建议使用,因此我更喜欢使用Parcelable。
虽然我使用Kotlin 1.3.31,但在打包某些数据类时遇到了问题。示例:
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Place(val street: String, val postal: String, val city: String) : Parcelable
Android Studio抱怨:
“ Place”类不是抽象的,并且不实现抽象成员 public abstract fun writeToParcel(p0:Parcel !, p1:Int):定义的单位 在android.os.Parcelable中
根据一些教程
就是这样!您不再需要编写任何包裹方法!
https://android.jlelse.eu/yet-another-awesome-kotlin-feature-parcelize-5439718ba220
我不想使用
androidExtensions {
experimental = true
}
在生产中的东西。
我这里有什么替代品?
答案 0 :(得分:4)
在我的情况下,我已经使用的Kotlin插件版本比1.3.40
版本最新。
但是我仍然遇到Android Studio错误,编译成功,但是IDE抱怨@Parcelize
注释。
也许你也明白了。
这是解决方案。
检查您在Gradle中配置的kotlin插件版本是否与Android Studio中捆绑的版本相同。
我收到错误消息是因为我的Gradle koltin插件版本为1.3.61
,而Android Studio捆绑版本为1.3.50
如何升级Kotlin插件版本?
工具-> Kotlin->配置kotlin插件更新
检查最新版本并安装,保持两个版本相同。
答案 1 :(得分:0)
如果您不想/不能使用实验性的方法,则始终可以仅实现Parcelable(在类名上执行cmd + enter / alt + enter->“添加Parcelable实现”,以便IDE为您创建方法架构)。扩展程序。
但是,我已经在产品环境中使用@Parcelize(经过大量测试)了一年多,没有任何问题。(只是一种意见,并不是说您应该这样做)
答案 2 :(得分:0)