Как изменить и сохранить сводную информацию о предпочтениях коммутатора - PullRequest
0 голосов
/ 25 марта 2020

Итак, я недавно присоединился к поезду Kotlin, и у меня есть фрагмент, который меняет тему моего приложения android, я сделал перезапуск фрагмента после успешного переключения темы, а затем из MainActivity повторно открыл фрагмент, используя пакет установить ранее во фрагменте.

Все эти работы. Проблема, с которой я столкнулся, я также пытался изменить поле android: summary после переключения темы, но каждый раз, когда активность перезапускается, он возвращается к значению по умолчанию

Что я мог сделать неправильно ?

SettingsFragment.kt

       findPreference(getString(R.string.key_dark_theme)).setOnPreferenceChangeListener { preference, newValue ->
                    preference.isEnabled = false
                    val switchPreference = preference as SwitchPreference
                    val intent = activity!!.intent
                    val tempBundle = Bundle()
                    intent.putExtra("bundle", tempBundle)

                    Thread {
                        val changeTheme = newValue as Boolean

                        try {
                            activity!!.runOnUiThread {
                                switchPreference.isChecked = changeTheme
                                switchPreference.summary = "On" //this clears once I restart the activity
                                activity!!.finish()
                                activity!!.startActivity(intent)
                                activity!!.overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out)
                            }
                        } catch (e: Exception) {
                            e.printStackTrace()
                        }

                        activity!!.runOnUiThread {
                            switchPreference.isEnabled = true
                        }
                    }.start()
                    false
                }

1 Ответ

1 голос
/ 25 марта 2020

Вместо этого вы можете использовать макет: если вы хотите использовать две сводки для включения и выключения состояния переключателя, вы можете использовать следующие свойства:

<SwitchPreference
            android:summaryOff="@string/summary_off"
            android:summaryOn="@string/summary_on" />

Но если вы хотите использовать Java или Kotlin: сводка, которая устанавливается программно, не будет сохранена, если вы хотите сохранить ее, вы должны всегда устанавливать ее в onCreate

...