Kotlin - Как отделить переменную объекта - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть ошибка:

Это не поддерживается напрямую 'Parcelize', аннотируйте тип параметра с помощью @RawValue, если вы хотите, чтобы он был сериализован с использованием 'writeValue'

когда я реализовал @ 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 голосов
/ 03 января 2019

Добавить аннотацию @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
0 голосов
/ 26 декабря 2018

Сделайте также UserDetailUiModel и PersonDetailUiModel Parcelable (используя @Parcelize или нет).

Или сделайте их Serializable и используйте userInfo: @RawValue UserDetailUiModel, как указано в сообщении, но это худшая альтернатива.

0 голосов
/ 26 декабря 2018

Если вы действительно хотите использовать аннотацию @Parcable, вам нужно установить версию Kotlin и Make Gradle, как указано ниже.тогда вы сможете использовать аннотацию @Parcable ...

Пример

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

----- Kotlin -------- Предварительные условия: Kotlinверсия 1.1.4 или новее

------- Gradle -----

builde.gradle


androidExtensions {
    experimental = true
}

My Gradle File ..... См. пример -------->

   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
    }
}
0 голосов
/ 26 декабря 2018
  1. Установите плагин Parcelable для Kotlin из Preferences-> plugins
  2. Расширьте свой класс из Parcelable
  3. Щелкните правой кнопкой мыши на имени вашего класса и выберите: Generate -> Parcelable

Он сгенерирует все необходимые методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...