画面遷移に使えるかなーと思って触ってみたのでメモ
Parcelerはシングルトンじゃないとだめぽ
object MenuParceler : Parceler<MenuOuterClass.Menu> { override fun create(parcel: Parcel): MenuOuterClass.Menu { val byteArray = ByteArray(parcel.readInt()) parcel.readByteArray(byteArray) return MenuOuterClass.Menu.parseFrom(byteArray) } override fun MenuOuterClass.Menu.write(parcel: Parcel, flags: Int) { val byteArray = toByteArray() parcel.writeInt(byteArray.size) parcel.writeByteArray(byteArray) } } class MenuDetailActivity { @Parcelize data class Extras( @TypeParceler<MenuOuterClass.Menu, MenuParceler>() val menu: MenuOuterClass.Menu, val recipeIndex: Int = 0) : Parcelable private val extras: Extras by lazy { intent.extras!!.getParcelable(this::extras.name) as Extras } companion object { fun newIntent(context: Context?, extras: Extras): Intent { val intent = Intent(context, MenuDetailActivity::class.java) intent.putExtra(MenuDetailActivity::extras.name, extras) return intent } } }