簡體   English   中英

更改主題並重新創建活動時,PreferenceFragmentCompat不會更改顏色

[英]PreferenceFragmentCompat won't change color when change theme and recreate activity

我將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()
        }
    }
}

    }

似乎是庫中的錯誤。 現在它已在androidx.preference:preference:1.1.0-alpha02中修復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM