PreferenceFragmentCompat не изменит цвет при смене темы и воссоздании активности - PullRequest
0 голосов
/ 25 декабря 2018

Я использую PreferenceFragmentCompat для настроек, и когда я изменяю настройку темы с помощью ListPreference на темную тему и воссоздаю текст активности, он остается темным и становится невидимым.Если я снова открою этот фрагмент текста станет белым, но он вернется к черному цвету при изменении ориентации

Вот мои стили:

     <style name="AppThemeLight" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="preferenceTheme">@style/preferenceLight</item>

    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowActionModeOverlay">true</item>

    <item name="android:textColorPrimary">@color/primaryText</item>
    <item name="android:textColorSecondary">@color/secondaryText</item>

</style>

<style name="AppThemeDark" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="preferenceTheme">@style/preferenceDark</item>

    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowActionModeOverlay">true</item>

    <item name="android:windowBackground">@color/primaryText</item>

    <item name="android:textColorPrimary">@color/primaryTextDark</item>
    <item name="android:textColorSecondary">@color/secondaryText</item>

</style>

<style name="preferenceLight" parent="PreferenceThemeOverlay.v14.Material">
    <item name="android:textColor">@color/primaryText</item>
    <item name="android:textColorPrimary">@color/primaryText</item>
    <item name="android:textColorSecondary">@color/secondaryText</item>
</style>

<style name="preferenceDark" parent="PreferenceThemeOverlay.v14.Material">
    <item name="android:textColor">@color/primaryTextDark</item>
    <item name="android:textColorPrimary">@color/primaryTextDark</item>
    <item name="android:textColorSecondary">@color/secondaryText</item>
</style>

и фрагмент

    class SettingsFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener{

private lateinit var advertisePreferences: AdvertisePreferences

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    advertisePreferences = AdvertisePreferences(context!!)
}

override fun onResume() {
    super.onResume()
    (activity as AppCompatActivity).supportActionBar?.title = getString(R.string.settings)
    preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(this)
}

override fun onPause() {
    super.onPause()
    preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
}

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
    setPreferencesFromResource(R.xml.app_preferences, rootKey)
}

override fun onPreferenceTreeClick(preference: Preference): Boolean {

    when(preference.key){

    }

    return super.onPreferenceTreeClick(preference)
}

override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {

    when(key){
        getString(R.string.theme_key) -> {
            activity?.recreate()
        }
    }
}

    }

1 Ответ

0 голосов
/ 25 декабря 2018

Кажется, это была ошибка в библиотеке.Теперь это исправлено в androidx.preference: preference: 1.1.0-alpha02

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...