#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() на панели действий, который больше не существует. Если я использую стандартную панель темных действий, все работает просто отлично.
Комментарии:
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">