【问题标题】:How to check the current state of a SwitchPreference?如何检查 SwitchPreference 的当前状态?
【发布时间】:2021-12-17 19:36:16
【问题描述】:

我有一个SwitchPreferenceCompat,我想说如果开关首选项已启用显示 Toast(开关首选项已启用)否则它再次禁用显示 Toast(开关首选项已禁用) 有一些这样的问题,但没有一个对我有用。

这里是 XML:

<PreferenceCategory app:title="عممومی">

    <Preference
        app:key="backUp"
        app:title="بشتیبان گیری آفلاین از اطلاعات" />
     

      <SwitchPreferenceCompat
        app:key="vibrate"
        app:defaultValue="true"
        app:summary="لرزش هنگام انتخاب یک آیتم"
        app:title="لرزش" />

</PreferenceCategory>

和设置片段:

class SettingsFragment : PreferenceFragmentCompat() {

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

Related question

【问题讨论】:

    标签: android kotlin switch-statement fragment switchpreference


    【解决方案1】:
    myPref!!.onPreferenceClickListener =
        Preference.OnPreferenceClickListener {
            Toast.makeText(activity, "WORK", Toast.LENGTH_SHORT).show()
            true
        }
    

    您需要将onPreferenceClickListener 替换为onPreferenceChangeListener

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
    
        val myPref = findPreference<SwitchPreferenceCompat>("vibrate")
    
        myPref?.onPreferenceChangeListener =
           // The callback is triggered whenever the switch preference is changed
            Preference.OnPreferenceChangeListener { pref, newValue ->
    
                if (pref is SwitchPreferenceCompat) {
                    val value = newValue as Boolean
                    if (value) Toast.makeText(requireContext(), "WORK", Toast.LENGTH_SHORT)
                        .show()
                    else Toast.makeText(requireContext(), "OFF", Toast.LENGTH_SHORT).show()
                }
                true
            }
    }
    

    【讨论】:

    • 我认为您还需要将val myPref = findPreference("backUp") as Preference? 更改为vibrate,因为这是您的SwitchPreferenceCompat 的关键
    • backUp是一种按钮,和switch完全不同
    猜你喜欢
    • 2014-04-10
    • 2015-10-10
    • 1970-01-01
    • 2021-12-11
    • 2010-11-08
    • 1970-01-01
    • 2016-01-10
    相关资源
    最近更新 更多