当前位置: 首页 > 知识库问答 >
问题:

当我用Kotlin勾选一个CheckBoxPreference时,如何启动一个函数?

尉迟墨竹
2023-03-14

下面的代码使用AndroidX.Preference.PreferenceFragmentCompat在首选项UI中显示CheckBoxPreference的复选框控件。

我希望一个名为myfunction()的函数可以在我选中checkboxpreference的复选框控件时启动,我该怎么做?

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
 
    <CheckBoxPreference
        app:key="checkBoxDisplayPinPrompt"
        app:title="@string/preferencePromptPin"
        app:summary="@string/preferencePromptPinSummary"
        app:defaultValue="false"
    />

</PreferenceScreen>



import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import info.dodata.voicerecorder.R


class FragmentPreference : PreferenceFragmentCompat(){

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


    }

}

共有1个答案

唐焕
2023-03-14

您可以通过findpreference(“pref_name”)获取首选项,请尝试使用此选项

class FragmentPreference : PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.mypreference, rootKey)
        val checkBox = findPreference("checkBoxDisplayPinPrompt") as CheckBoxPreference
        checkBox.setOnPreferenceChangeListener { preference, newValue ->
            if (newValue as Boolean){
                  //  function() your Fonction here 
                 }
            Log.e(ContentValues.TAG, "onPreferenceChange: $newValue")
            true }

    }

}
 类似资料: