Ответ
Для сохранения объекта в Bundle он должен реализовывать Parcelable или Serializable. Лучше использовать Parcelable - он работает быстрее.
Пример с Parcelable:
// Класс должен реализовывать Parcelable
data class User(val name: String, val age: Int) : Parcelable {
// Реализация Parcelable
constructor(parcel: Parcel) : this(
parcel.readString()!!,
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeInt(age)
}
override fun describeContents() = 0
companion object CREATOR : Parcelable.Creator<User> {
override fun createFromParcel(parcel: Parcel) = User(parcel)
override fun newArray(size: Int) = arrayOfNulls<User>(size)
}
}
// Сохранение в Bundle
val bundle = Bundle().apply {
putParcelable("user_key", User("John", 30))
}
// Получение из Bundle
val user = bundle.getParcelable<User>("user_key")
Для простых случаев можно использовать Serializable, но это менее эффективно.