アクションバーを消そうとしたらアプリ落ちた
何が起きたか
Jetpackのnavigationを使った上でアクションバー消そうとしたら、 (具体的なエラー名は分からなかったけど)アプリが開いてくれないという現象が起きました。
そもそもどうやってアクションバーを消すか
2種類紹介します。
- values/styles.xmlのparentで
???.NoActionBar
を継承
<resources> <!-- ココ!! --> <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> </resources>
- values/styles.xmlに
<item name="windowsNoTitle">true</item>
を追加
<resources> <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> <!-- ココ!! --> <item name="windowNoTitle">true</item> </style> </resources>
いきなりですが、解決方法
navController
を色々やってるところ(ActivityなりFragmentなり)
//落ちるコード navController = Navigation.findNavController(this,R.id.nav_fragment) bottomNav.setupWithNavController(navController) NavigationUI.setupActionBarWithNavController(this,navController
もうお気づきかもしれませんが...
NavigationUI.setupActionBarWithNavController(this,navController)
この1行ですね。
どんなメソッドかというと(公式より)
By calling this method, the title in the action bar will automatically be updated when the destination changes (assuming there is a valid label).
要するに、 このメソッドを呼び出すとアクションバーのタイトルが自動的に変更されるよ 的なことを言ってます。
だからこの1行を消してあげるとちゃんと動きます!!
結論
タイトルバーの名前を変更できるやつ使ってるのに、 タイトルバー消そうとしたらそりゃ上手くいくわけないよねって話でした。
割とピンポイントな現象だと思いますが、 ピンポイントな誰かの役に立つことができたら嬉しいです。 読んでいただきいただきありがとうございました。