出会い
onCreate()内に書いているコードには問題ないはずなのに、画面が表示されない。。。
なぜだ。と思ったら!
PersistableBundle
を使用していたからでした。
PersistableBundleって何?
API21から追加された新機能です。
Bundleと似ていますが、persist(持続する)という言葉からもわかる通り、
永続的に保存することができます。
また、Bundleはカスタムを含めたあらゆる種類のデータを含めることができるのに対して、
PersistableBundle
は決めれた種類のデータしか対応していません。
- Int
- Int[]
- Long
- Long[]
- Double
- Double[]
- String
- String[]
- Boolean
- Boolean[]
- PersistableBundle
- null
使用方法
override fun onSaveInstanceState(
outState: Bundle,
outPersistentState: PersistableBundle
) {
super.onSaveInstanceState(outState, outPersistentState)
}
override fun onRestoreInstanceState(
savedInstanceState: Bundle?,
persistentState: PersistableBundle?
) {
super.onRestoreInstanceState(savedInstanceState, persistentState)
}
の二つのメソッドと組み合わせて呼び出されます。
そして、AndroidManifestの該当Acticityの欄に
<acticity
android:persistableMode=”persistAcrossReboots”>
</activity>
を記述してActivittyのデータを永続的に保存できるようにする必要があります。
最後に
上記に則らずに使用したため、当たり前機能しなかった。。。
こんな初歩的なミスですごく悩みました。
天才エンジニアへの道はまだまだ遠いですね!
※理解に誤りや補足事項があればコメントしていただけるととても嬉しいです!
参照
https://developer.android.com/guide/topics/manifest/activity-element?hl=ja
https://developer.android.com/reference/android/os/PersistableBundle