エラー対処:java.lang.IllegalStateException: menu.findItem(R.id.action_settings) must not be null
エラーコード
java.lang.IllegalStateException: menu.findItem(R.id.action_settings) must not be null
エラーが出た環境
フラグメントを使用してメニューを描画する場合にエラーが発生した。フラグメント.ktファイルにはonCreateOptionMenuをオーバーライドしている。 フラグメント内で取得しようとするR.id.action_settingsはmenu.XMLファイルは存在している。
エラーの対処方法
フラグメントにくっつけるアクティビティでは、オーバーライドしたonCreateOptionMenuを実装せず、フラグメント.ktのみでonCreateOptionMenuを実装していた。そこでアクティビティの方も実装したらエラーが出なくなった。
得られた知見
フラグメントでonCreateOptionMenuをオーバーライドして実装する場合には、アクティビティの方もonCreateOptionMenuをオーバーライドする必要がある。
追記
MainActivity以外で作成したBasic ActivityでonCreateOptionMenuをoverrideすると
menuInflater.inflate(R.menu.menu_main, menu)
を忘れることがある。これを忘れると上記のエラーが生じる。