gpt4 book ai didi

android - X 类不是抽象的,也没有实现 android.os.Parcelable 中定义的 fun writeToParcel()

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:58 27 4
gpt4 key购买 nike

在我的 Android 应用程序中,我想向我的 Intent 添加一个包含 Place 对象的 Bundle,如下所述。由于 serializable 速度慢且不推荐,我更喜欢 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 提示:

Class 'Place' is not abstract and does not implement abstract member public abstract fun writeToParcel(p0: Parcel!, p1: Int): Unit defined in android.os.Parcelable

根据一些教程

That’s it! You don’t need to write any parcel methods anymore!

https://android.jlelse.eu/yet-another-awesome-kotlin-feature-parcelize-5439718ba220

我不想用

androidExtensions {
experimental = true
}

在生产方面。

我在这里有什么选择?

最佳答案

2019 年 11 月 19 日更新

稳定发布后Kotlin 1.3.60及其相应的 Android Studio 插件问题不再存在。 Let's celebrate

2019 年 8 月 27 日更新

在使用全新的 Kotlin 1.3.50 进行更多研究和测试之后,似乎这个问题最终会在他们发布 Kotlin 1.3.60 时得到彻底解决> as per this YouTrack issue

编辑 2019 年 6 月 19 日

随着 Kotlin 1.3.40 的发布,@Parcelize 注释已经过实验并且工作得很好。唯一的问题是报告 issue这使得 IDE 变红,把它放在一边,代码确实可以完美地编译和运行。

Sample code

Sample code

Sample code

我也用这种对象进行了测试,它也确实有效:

enter image description here

旧答案

我面临着完全相同的问题,在调查时我发现了这一点:

Jake Wharton on parcelize

因此,从 Kotlin 1.3.40 开始,@Parcelize 注释看起来将完全稳定。在那之前,您必须设置 experimental 标志。 (悲伤地)


他们错误地将 @Parcelize 推到实验性功能之外,您仍然会遇到编译错误。

关于android - X 类不是抽象的,也没有实现 android.os.Parcelable 中定义的 fun writeToParcel(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com