Android StudioのCodeメニューのConvert Java File to Kotlin Fileを使ってKotlinへの移行を進めるも、ランタイムエラーに遭遇。
java.lang.IllegalArgumentException: Parameter specified as non-null is null:
method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,
parameter savedInstanceState
要は引数がnull許可しないのにnullが来たと怒られている。
KotlinでParameter specified as non-null is null
この記事にあるように、引数が
, savedInstanceState: Bundle)
のようになっているところを、
, savedInstanceState: Bundle?)
のようにnull許可に変えることで解決することは理解できた。しかし、どこを直すべきかわからずハマった。ActivityのsavedInstanceStateはnull許可している。どこ?
注意深くスタックトレースを追うと、Application.ActivityLifecycleCallbacksのinterface実装の引数がnull許可になっていなかったことが原因。
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle)
CodeメニューのOverride Methodsを選択してコードを自動生成すると、BundleだけでなくActivityもnull許可で作られたので、そのようにしました。
override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?)
ActivityLifecycleCallbacksのその他のメソッドも同様に修正して、無事起動するようになりました。