ちょっとした知見置き場

Andoidアプリ開発における知見やメモをまとめておきます。

アクションバーを消そうとしたらアプリ落ちた

何が起きたか

Androidアプリ開発の話です。

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).

developer.android.com

要するに、 このメソッドを呼び出すとアクションバーのタイトルが自動的に変更されるよ 的なことを言ってます。

だからこの1行を消してあげるとちゃんと動きます!!

結論

タイトルバーの名前を変更できるやつ使ってるのに、 タイトルバー消そうとしたらそりゃ上手くいくわけないよねって話でした。

割とピンポイントな現象だと思いますが、 ピンポイントな誰かの役に立つことができたら嬉しいです。 読んでいただきいただきありがとうございました。