我有一个错误:
“ 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)
}
}
谢谢。
答案 0 :(得分:1)
同时设置UserDetailUiModel
和PersonDetailUiModel
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)
它将生成所有需要的方法。
答案 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