Нужна помощь в выяснении, почему приложение останавливается, когда я нажимаю кнопку "Настройки"

Я получаю следующую ошибку в Android Studio "Android Monitor"

Существует много ошибок, но в сущности говорится, что причина ошибки заключается в следующем:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual  method 'void android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a  null object reference
                                                                                 at com.example.robthoms.photopop.SettingsActivity.onCreate(SettingsActivity.java:28)

Я пытаюсь заставить Настройки работать на Панели инструментов, и я получил код от:

https://www.androidhive.info/2017/07/android-implementing-preferences-settings-screen/

Если вы перейдете по этой ссылке, вы увидите весь код для SettingsActivity.java, который я пытаюсь использовать, но когда я нажимаю "настройки" на панели инструментов, приложение закрывается.

Что не так с SettingsActivity, что приложение закрывается?

Мой AndroidManifest.xml:

Мой styles.xml

Скрывает ActionBar в классах, в то время как styles.xml имеет Light.DarkActionBar

    ActionBar bar  = getSupportActionBar () ;
    if       (bar != null) bar.hide () ;

2 ответа

Решение

Проблема вызвана тем, что в вашей деятельности нет ActionBar. В Android манифесте, убедитесь, что ваша деятельность использует тему, которая имеет ActionBar, Убедитесь, что на нем нет ничего похожего NoActionBar, Если ваша деятельность не использует какую-либо тему, проверьте AppTheme в styles.xml,

Одним из возможных решений было бы использовать это в манифесте:

<activity
    android:name=".SettingsActivity"
    android:theme="@style/Theme.AppCompat.Light" />

По-другому:

Добавьте новый стиль в styles.xml:

<style name="AppTheme.ActionBar" parent="AppTheme">
    <item name="windowActionBar">true</item>
    <item name="windowNoTitle">false</item>
</style>

И используйте новый стиль в манифесте:

<activity
    android:name=".SettingsActivity"
    android:theme="@style/AppTheme.ActionBar" />

Темой вашего стиля является noactionbar 1. Если вы хотите панель действий, используйте панель действий, содержащую тему ИЛИ 2. Вы также можете сделать собственный вид похожим на панель действий

Другие вопросы по тегам