diadia

興味があることをやってみる。自分のメモを残しておきます。

Android Kotlin IntentとBundleについて

intentに含まれるkeyの一覧を取得したい

様々な画面からある画面へ遷移する設計ではintent.putExtra()メソッドで格納したデータは遷移元の画面によって異なることがあり得る。 その際にintentが持たないキーをgetStringExtra()メソッドで取得しようものならエラーが出てしまう。 これに対しよくやったのがdjango(python)でキーを一覧取得できるkeys()メソッドを使って、その中にキーが有るかでif構文を用いる方法だ。 これをkotlinでもやろうとしたのだが、どうもBundleという概念が必要になるようだ。

Javaの場合はこれで取得できる

Set<String> keys = intent.getExtras().keySet();

Listing all extras of an Intent

残念なことにKotlinではgetExtras()メソッドを見つけることができなかった。そのかわりにBundleという概念で対応する必要がある。 この件については他の人の記事でも書かれている。

one thing is important here in Kotlin we don’t have getter setter, we have properties as you all can see I get the extras using (intent.extras) not (intent.getExtras()).

Kotlin Series — Share Data between Activities using Explicit Intent

Bundleについての解説

[Android]Bundle(バンドル)とは

これが一番わかりやすかった。