Нужна помощь в выяснении, почему приложение останавливается, когда я нажимаю кнопку "Настройки"
Я получаю следующую ошибку в 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. Вы также можете сделать собственный вид похожим на панель действий