1

运行我的第一个 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 无法解决吗?

4

3 回答 3

3
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
       ....
    }
    buildTypes {
        release {
            ...
        }
    }

    androidExtensions {
        experimental = true
    }
}
于 2019-10-15T13:16:39.797 回答
1

您需要添加

androidExtensions {
        experimental = true
    }

在您应用的 build.gradle

于 2019-10-15T12:54:59.227 回答
0

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

不要忘记 Kotlin 中的 Parcelize 功能是kotlin-android-extensions编译器插件的一部分,因此如果您的所有 Parcelable 类依赖于 Parcelize 注解,删除该插件最终会使它们无法编译。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

更多的

于 2021-05-19T12:41:15.790 回答