【问题标题】:Kotlin 1.3.50 Parcelize unresolved reference errorKotlin 1.3.50 Parcelize 未解决的参考错误
【发布时间】:2019-10-15 12:49:11
【问题描述】:

运行我的第一个 android 应用程序,kotlin 1.3.50。我最初实现了 Parcelable,但切换到 parcelize 然后添加了枚举。这是我的数据类

package com.igniterobotics.scouting_2019.Models

import android.os.Parcel
import android.os.Parcelable
import com.igniterobotics.scouting_2019.Enums.Movement
import com.igniterobotics.scouting_2019.Enums.Preload
import com.igniterobotics.scouting_2019.Enums.StartingPosition

@Parcelize
data class AutonResult(var hatchCount: Int, var cargoCount: Int, 
      var intakeDrop: Int, var itemDrops: Int, var startingPosision: StartingPosition, 
      var preload: Preload, var movement: Movement
)

一个问题提到 build.gradle 中的插件顺序是问题的根源。这是我的

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

知道为什么我@Parcelize 无法解决吗?

【问题讨论】:

标签: android kotlin kotlin-experimental


【解决方案1】:
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
       ....
    }
    buildTypes {
        release {
            ...
        }
    }

    androidExtensions {
        experimental = true
    }
}

【讨论】:

  • 谢谢。我会在几个小时内对此进行测试。这是我正在进行的个人项目。
  • 我在根级别添加了 androidExtensions,而不是 android 节点的子节点。另外,我的数据类最后没有:Parcelable。
【解决方案2】:

你需要添加

androidExtensions {
        experimental = true
    }

在您应用的 build.gradle 中

【讨论】:

  • 我尝试在插件之后添加它,是在正确的位置吗?我没有太多使用 gradle 文件,因为我大部分时间都在做 C# 开发。如果那是正确的地方,也许我有错字什么的。
  • 将其添加到 android{...} 标签内
【解决方案3】:

如果你在 2021 年仍然面临这个问题,你可以关注这个

不要忘记 Kotlin 中的 Parcelize 功能是 kotlin-android-extensions 编译器插件的一部分,因此删除该插件最终会使所有依赖 Parcelize 注释的 Parcelable 类无法编译。 JetBrains 从 Kotlin Android Extensions 中提取 Parcelize 到一个新插件中,

kotlin-parcelize

首先您需要将kotlin-parcelize 插件添加到您的模块中。

plugins {
    ..
    id 'kotlin-parcelize'
}

然后将旧的导入语句更改为

import kotlinx.android.parcel.Parcelize

import kotlinx.parcelize.Parcelize

例子

    import kotlinx.parcelize.Parcelize
    import android.os.Parcelable

    @Parcelize
    class User(val name: String, val age: Int): Parcelable

more

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多