Tengo un SwitchPreferenceCompat y quiero decir si la preferencia de cambio está habilitada, muestra Toast (la preferencia de cambio está habilitada), de lo contrario, se desactiva nuevamente, muestra un Toast (la preferencia de cambio está deshabilitada). Hubo algunas preguntas como esta, pero ninguna funcionó para mí.
Aquí está XML:
<PreferenceCategory app:title="عممومی"> <Preference app:key="backUp" app:title="بشتیبان گیری آفلاین از اطلاعات" /> <SwitchPreferenceCompat app:key="vibrate" app:defaultValue="true" app:summary="لرزش هنگام انتخاب یک آیتم" app:title="لرزش" /> </PreferenceCategory>Y Fragmento de configuración:
class SettingsFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.root_preferences, rootKey) } }myPref!!.onPreferenceClickListener = Preference.OnPreferenceClickListener { Toast.makeText(activity, "WORK", Toast.LENGTH_SHORT).show() true }
Debe reemplazar onPreferenceClickListener por 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 } }