Modifierコンポーサブル(Jetpack Compose)を扱う
Parcelableを実装する
ActivityやFragmentなどの画面間でデータを渡す際、自前で作成したデータクラスをそのままBundle(Intentの引数など)に乗せることはできないが、
これを可能にするのがParcelableインターフェース。
Serializableと比較して処理速度が非常に高速であるため、Androidアプリ開発ではParcelableの実装が推奨されている。
手動実装(ボイラープレート)
手動実装の場合は以下。
なお、現在 Parcelableを実装する場合はGoogleが提供している機構を使えばこれらが不要になる。(後述)
data class Item(
var title: String,
var description: String,
) : Parcelable {
// 1. Parcelからのコンストラクタ
constructor(parcel: Parcel) : this(
parcel.readString()!!,
parcel.readString()!!
)
// 2. データをParcelに書き込む
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(title)
parcel.writeString(description)
}
// 3. 内容説明用
override fun describeContents(): Int {
return 0
}
// 4. CREATORの実装
companion object CREATOR : Parcelable.Creator<Item> {
override fun createFromParcel(parcel: Parcel): Item {
return Item(parcel)
}
override fun newArray(size: Int): Array<Item?> {
return arrayOfNulls(size)
}
}
}
この実装が終われば、あとはBundle経由でデータの受け渡しが可能になる。
- データを詰める:
bundle.putParcelable("key", item) - データを取り出す:
val item = bundle.getParcelable("key", Item::class.java)
もっと簡単な方法:@Parcelize アノテーション
現在はGoogleが提供している Kotlin Parcelizeプラグイン を使うのが一般的。
build.gradleにプラグインを追加してアノテーションを付けるだけで、上記のボイラープレートコードがすべて自動生成される。
- build.gradleにプラグインを追加
plugins {
id 'kotlin-parcelize'
}
- データクラスにアノテーションを付けるだけ
@Parcelize
data class Item(
var title: String,
var description: String,
) : Parcelable
参考
最終更新: 2026.6.11