Android Parcelable в Kotlin: CREATOR не найден на Parcelable class

С выпуском Kotlin RC я начал писать приложение, чтобы узнать его, но я не могу понять, как заставить Parcelable работать.

класс данных:

 data class Project (val reponame:String, val username:String, val language:String, val vcsUrl:String, val branches:Map<String, Branch>) : Parcelable { companion object { val CREATOR = object : Parcelable.Creator<Project> { override fun createFromParcel(`in`: Parcel): Project { return Project(`in`) } override fun newArray(size: Int): Array<Project?> { return arrayOfNulls(size) } } } protected constructor(parcelIn: Parcel) : this ( parcelIn.readString(), parcelIn.readString(), parcelIn.readString(), parcelIn.readString(), mapOf<String, Branch>().apply { parcelIn.readMap(this, Branch::class.java.classLoader) } ) override fun describeContents(): Int { throw UnsupportedOperationException() } override fun writeToParcel(dest: Parcel, flags: Int) { dest.writeString(reponame) dest.writeString(username) dest.writeString(language) dest.writeString(vcsUrl) dest.writeMap(branches) } } 

Чтение:

 class ProjectDetailActivity : BaseActivity() { lateinit var project: Project companion object { const val EXTRA_PROJECT = "extra_project" } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) project = intent.extras.getParcelable(EXTRA_PROJECT) tvTitle.text = project.reponame } } 

Исключение:

 Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.eggman.circleciandroid.model.Project at android.os.Parcel.readParcelableCreator(Parcel.java:2415) at android.os.Parcel.readParcelable(Parcel.java:2337) at android.os.Parcel.readValue(Parcel.java:2243) at android.os.Parcel.readArrayMapInternal(Parcel.java:2592) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.get(BaseBundle.java:281) at com.eggman.circleciandroid.ui.ProjectDetailActivity.onCreate(ProjectDetailActivity.kt:22) 

Я уверен, что это что-то простое, что мне не хватает, кто-то еще имел успех с Parcelable на последнем Kotlin?

Kotlin Версия: 1.0.0-rc-1036

Версия плагина Kotlin: 1.0.0-rc-1036-IJ143-4

Код доступен для просмотра @ https://github.com/eggman87/circle-kotlin

Solutions Collecting From Web of "Android Parcelable в Kotlin: CREATOR не найден на Parcelable class"

Kotlin RC удалил ранее устаревшее поколение статических полей для всех свойств сопутствующих объектов (подробнее об этом в этом ответе ).

Теперь только те, которые отмечены lateinit , lateinit или @JvmField будут иметь статическое поле.

Вам необходимо аннотировать val CREATOR аннотацией @JvmField так как Android Framework ожидает статического поля CREATOR в вашем классе.

Здесь у вас есть полезные функции расширения Kotlin, которые помогут вам создать CREATOR s, а также некоторые примеры (используя классы данных и список внутри класса данных)

Пример Gist: Data Class & Parcelables

Я использую этот код в Android-приложении: (link)

Тот же код вы можете найти здесь: (link)