Добавить ActionBar в PreferenceActivity

Я пытаюсь сделать Settings Activity С помощью PreferenceActivity. Проблема в том, что ActionBar не появится, что бы я ни делал.

Я пробовал getSupportActionBar, getActionBar, setActionBar. Ничего не работает. Я вижу другие настройки приложений с ActionBars. Разве они не используют PreferenceActivity?

2 ответов


если вы используете тему AppCompat, вы должны обратить внимание на некоторые моменты.

на PreferenceActivity не распространяется на AppCompatActivity или устаревший ActionBarActivity.

в качестве решения вы можете создать PreferenceFragment как вы делаете и использовать стандартный AppCompatActivity. Конечно, вы можете использовать также Toolbar.

кроме того, с новым 22.1 + appcompat вы можете использовать AppCompatDelegate расширить поддержку AppCompat к любому Деятельность.

вы можете проверить эту официальную ссылку на AppCompatPreferenceActivity, где вы можете найти пример этой техники.


явно themeing SettingActivity с темой, производной от DarkActionBar, мы можем добавить обратно панель действий.

я сделала так же есть бар в моем активность и это сработало для меня .

1.Сначала добавьте другой стиль для вашего Активность в стилях.в XML

<style name="SettingsTheme" parent="AppTheme"/>

2.Тогда сделайте отдельный стили.в XML для версии 21 (v21 / styles.xml), как указано ниже

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Settings activity theme. -->
    <style name="SettingsTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
        <item name="android:colorPrimary">@color/sunshine_blue</item>
        <item name="android:colorPrimaryDark">@color/sunshine_dark_blue</item>
    </style>

</resources> 
  1. наконец-то в AndroidManifest тег для SettingsActivity вы также хотите добавить тему настроек:

    android: theme= "@style / SettingsTheme"

Это добавит панель действий к вашему активность в устройствах, имеющих Android версии терке или равна 21.