diadia

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

エラー対処: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)

を忘れることがある。これを忘れると上記のエラーが生じる。