Отключение панели действий приводит к сбою приложения

#android #xml #android-studio

#Android #xml #android-studio

Вопрос:

Если я отключу панель действий в своем приложении для Android, просто изменив styles.xml (themes.xml в моем случае), чтобы:

 <resources xmlns:tools="http://schemas.android.com/tools">
    <style name="JARVISAPP" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryDark">@color/purple_700</item>
        <item name="colorAccent">@color/teal_200</item>
    </style>
</resources>
 

… приложение мгновенно вылетает при запуске, потому что каким-то образом оно хочет запустить метод setTitle() на панели действий, который больше не существует. Если я использую стандартную панель темных действий, все работает просто отлично.

Редактировать: вот ошибки, которые выводит Android Studio: ошибки

Комментарии:

1. Откройте Logcat в нижней части экрана и сделайте снимок экрана с любым красным текстом. В этом и заключается ошибка, которая может помочь людям понять вашу проблему.

Ответ №1:

Попробуйте изменить MainActivity на расширение android.app.Activity вместо AppCompatActivity, поскольку последнее требует, чтобы тема вашего действия / приложения наследует одну из тем панели действий, или попробуйте добавить

 <item name="android:windowActionBar">false</item>
 

к теме, используемой MainActivity

Ответ №2:

<style name="JARVISAPP" parent="Theme.AppCompat.Light.NoActionBar">

Стиль вашего приложения наследуется от Theme.AppCompat.Light.NoActionBar , и, следовательно, у вас не будет панели действий.

И поэтому при вызове getSupportActionBar() будет null

Итак, вы получили исключение NullPointerException при вызове getSupportActionBar().getTitle()

Так что либо не устанавливайте заголовок для ActionBar, либо сделайте тему вашего приложения наследуемой от темы, у которой есть панель действий, как показано ниже

<style name="JARVISAPP" parent="Theme.AppCompat.Light.DarkActionBar">