未解决的参考:Parcelable Kotlin

Posted

技术标签:

【中文标题】未解决的参考:Parcelable Kotlin【英文标题】:Unresolved reference: Parcelable Kotlin 【发布时间】:2021-10-29 11:35:18 【问题描述】:

我想使用 safeArgs 将一个对象从一个片段发送到另一个片段,但即使我添加了必要的插件,Parcelable 也无法正常工作。有人能帮帮我吗? 模型类


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

@Parcelize
data class GazModel(
    val id: String,
    val name: String,
    val description: String?,
    val price : Double,
    val priority: Int,
    val weight : Double,
    val imageUrl : String?,
    var quantity : Int = 0,
    var selected: Boolean = false,
    val gazType: String, // TRADEX, TOTAL, CAMGAZ
) :  Parcelable

build.gradle.kts(项目)

 dependencies 
        //...
        val nav_version = "2.3.5"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    

build.gradle.kts(模块)

plugins 
 //...
    id("androidx.navigation.safeargs.kotlin")
    id ("kotlin-parcelize")

问题框中出现的问题

Unresolved reference: os
No 'Parcelable' supertype
Unresolved reference: Parcelable

【问题讨论】:

你是 gradle 文件 Kotlin 还是 Groovy? build.gradle.kts 还是 build.gradle? 这可能有助于进一步的过程:***.com/questions/68973416/… @user2836202,他们是 build.gradle.kts @KaruneshPalekar 谢谢你的回答先生,但我总是遇到同样的问题,数据类中的 parcelable 无法识别 【参考方案1】:

在 build.gradle(Module) 中,添加一个 id('kotlin-android-extensions') 而不是 id ("kotlin-parcelize"),就可以了!

plugins 
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'

【讨论】:

我试过了,但它不起作用,我读到 id 'kotlin-android-extensions' 已弃用 还将这一行添加到 build.gradle.kts (Project) classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"【参考方案2】:

试试这个

@Parcelize
data class GazModel(
    val id: String,
    val name: String,
    val description: String?,
    val price : Double,
    val priority: Int,
    val weight : Double,
    val imageUrl : String?,
    var quantity : Int = 0,
    var selected: Boolean = false,
    val gazType: String, // TRADEX, TOTAL, CAMGAZ
) :  Parcelable

我的意思是用 Parcelable 扩展而不是 Parcelable 希望这能解决问题

【讨论】:

以上是关于未解决的参考:Parcelable Kotlin的主要内容,如果未能解决你的问题,请参考以下文章

com.google.android.gms.common.internal.safe parcel.safe parcelable 未找到

无法解决“Parcelable 遇到写入可序列化对象的 IOException”

解决ANRJVMSerializable与Parcelable红黑树一道算法题

Java嵌套parcelable,无法初始化数组

Android:使用Parcelable接口在跳转Activity时传递数据以及错误信息 Parcel: unable to marshal value 的解决

Android:使用Parcelable接口在跳转Activity时传递数据以及错误信息 Parcel: unable to marshal value 的解决