Kotlin-如何分割对象变量

时间:2018-12-26 07:18:02

标签: android kotlin

我有一个错误:

  

“ Parcelize”不直接支持此功能,如果要使用“ writeValue”序列化参数类型,请使用@RawValue注释该参数类型。

当我实现@Parcelize时

@Parcelize data class PersonUiModel (
    var personNo: String? = null,
    var personItemNo: String? = null,
    var packageId: String? = null,
    var userInfo: UserDetailUiModel? = null,
    var personInfo: PersonDetailUiModel? = null
) : Parcelable, Cloneable {

  override public fun clone(): PersonUiModel {
    return PersonUiModel(personNo= this.personNo, personItemNo = this.personItemNo,packageId = this.packageId, userInfo = this.userInfo, personInfo = this.personInfo)
  }
}

谢谢。

4 个答案:

答案 0 :(得分:1)

同时设置UserDetailUiModelPersonDetailUiModel Parcelable(是否使用@Parcelize)。

或者按照消息提示将其设置为Serializable,并使用userInfo: @RawValue UserDetailUiModel,但这是一个更糟糕的选择。

答案 1 :(得分:1)

如果您真的想使用@Parcable注解,则必须设置您的Kotlin版本和Make Gradle,如下所示。 那么您就可以使用@Parcable注解...

示例

@Parcelize
data class Student(val id: String, val name: String, val grade: String) : Parcelable

-----科特林--------     先决条件:     Kotlin 1.1.4或更高版本

-------等级-----

builde.gradle


androidExtensions {
    experimental = true
}

我的Gradle文件.....参见示例-------->

   android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "xxx.xxx.xxx"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    androidExtensions {
        experimental = true
    }
}

答案 2 :(得分:0)

  1. 从“首选项”->插件中安装Kotlin的Parcelable插件
  2. 从Parcelable扩展您的课程
  3. 右键单击您的班级名称,然后选择:生成->可包裹的

它将生成所有需要的方法。

答案 3 :(得分:0)

添加注释@Parcelize并扩展到Parcelable

@Parcelize
data class PersonUiModel (
    var personNo: String? = null,
    var personItemNo: String? = null,
    var packageId: String? = null,
    var userInfo: UserDetailUiModel? = null,
    var personInfo: PersonDetailUiModel? = null
) : Parcelable