この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
Kotlin1.1.4で追加されたParcelable Supportを使ってみました。
用途としては、画面回転時にActivityが破棄されてしまうので、BundleにParcelableを突っ込んで、復元処理をしたりすると思います。
Kotlinでは、この辺をいい感じにしてくれるParcelableSupportがあるので使ってみました。
2017/12/22時点ではexperimentalです
ソースコード
app/build.gradle
android {
...
androidExtensions {
experimental = true
}
}
dependencies {
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
Todo.kt
@SuppressLint("ParcelCreator")
@Parcelize
data class Todo constructor(
val id: String,
val body: String) : Parcelable
MainActivity.kt
class MainActivity : AppCompatActivity() {
companion object {
val KEY_TODO = "todo"
}
lateinit var todo: Todo
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
todo = if (savedInstanceState == null) {
Todo("id", "body").apply {
Log.d("instance", "newInstance: $this")
}
} else {
savedInstanceState.getParcelable<Todo>(KEY_TODO).apply {
Log.d("instance", "saveInstance: $this")
}
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable(KEY_TODO, todo.copy(body = "copy body"))
}
}
まとめ
アノテーションをつけるだけで楽ですね。experimentalでなくなる日を楽しみしてます。