gpt4 book ai didi

android - 如何检查 SwitchPreference 的当前状态?

转载 作者:行者123 更新时间:2023-12-04 07:14:22 25 4
gpt4 key购买 nike

我有一个 SwitchPreference在我的 SettingsFragment.kt这会根据它是打开还是关闭来更改图标和标题。
这是代码:

notificationsPreference.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
val switched = newValue as? Boolean ?: false
if (switched) {
notificationsPreference.icon = ContextCompat.getDrawable(this@SettingsFragment.requireContext(), R.drawable.ic_notifications_active)
notificationsPreference.title = "Receive Notifications"
} else {
notificationsPreference.icon = ContextCompat.getDrawable(this@SettingsFragment.requireContext(), R.drawable.ic_notifications_off)
notificationsPreference.title = "Mute Notifications"
}
true
}
但是,此代码有效,假设用户单击 SwitchPreference下车,离开 SettingsFragment并回到它。它将显示 SwitchPreference关闭,但标题和图标将不正确。正确的图标和标题是我在 else 中的代码。上面的声明。
如何检查 SwitchPreference 的当前状态在用户输入 SettingsFragment 之前.我想检查一下,如果 SwitchPreference关闭,我可以以编程方式设置正确的图标和标题。

最佳答案

SwitchPreference保持当前值在 SharedPreference使用 bool 键/值对。
因此,您可以在 PreferenceFragment 的任何时候执行此操作。显示使用其生命周期方法之一,如 onCreatePreferences()

override fun onCreatePreferences(savedInstanceState: Bundle, rootKey: String) {
setPreferencesFromResource(
R.xml.settings, // Your setting.xml file
rootKey
)

val preference = findPreference(
getString(R.string.my_preference_key) // Change this to the preference key set in the settings XML file
val sharedPrefs =
PreferenceManager.getDefaultSharedPreferences(this@SettingsFragment.requireContext())

// Get the preference value
val isOn: Boolean = sharedPrefs.getBoolean(
preference.getKey(),
false // default value
)

if (isOn) {
notificationsPreference.icon = ContextCompat.getDrawable(this@SettingsFragment.requireContext(), R.drawable.ic_notifications_active)
notificationsPreference.title = "Receive Notifications"
} else {
notificationsPreference.icon = ContextCompat.getDrawable(this@SettingsFragment.requireContext(), R.drawable.ic_notifications_off)
notificationsPreference.title = "Mute Notifications"
}

}
一定要改 R.xml.settings到您的设置文件名,以及 R.string.my_preference_key到首选项键。

关于android - 如何检查 SwitchPreference 的当前状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68875154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com