1

我正在尝试启用 DefaultSharedPreferences 中的项目。

在preferences.xml 我将值更改为android:enabled="false"

现在,我尝试创建一个代码,该代码将在选中DefaultSharedPreferences中其他位置的复选框时启用此偏好。

我的 XML 文件:

        <CheckBoxPreference
        android:key="checkboxinternet"
        android:title="Checkbox Preference"
        android:summary="Check it on, check it off"
    />

所以当这个复选框被选中时

SharedPreferences ingevuldesysteeminstellingen = PreferenceManager.getDefaultSharedPreferences(this);   


    if (true == ingevuldesysteeminstellingen.getBoolean( "checkboxinternet", false )) {
        Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
        editor.putBoolean( "checkboxinternet", false);
        editor.commit();
    } else { }

这是否可能,尝试更改值 Enabled 和 selectable,现在已经研究了几天,并开始相信这甚至是不可能的。

更新

到目前为止,我得到了以下部分的工作,当一个复选框被按下时,我可以让它执行一些东西。但我仍然无法让它工作以使列表或其他复选框启用或可选择。

到目前为止我的一段代码

ingevuldesysteeminstellingen = PreferenceManager.getDefaultSharedPreferences(this);

    listener = new SharedPreferences.OnSharedPreferenceChangeListener() 
    {
        public void onSharedPreferenceChanged(SharedPreferences ingevuldesysteeminstellingen,String key) 
        {

            if (key.equals( "checkboxautomaticrefresh")) 
            {
                System.out.println("Checkbox automatic refresh werd uitgelezen");
                //refreshtijdenable();
            }
            else
            {
            }

        }
    };      
    ingevuldesysteeminstellingen.registerOnSharedPreferenceChangeListener(listener);

那么接下来我要获得一个列表或一个复选框是否启用。

4

1 回答 1

0

您可以在您的 中使用以下代码PreferenceActivity

    //Retrieve the other checkbox
    CheckBoxPreference otherCheckboxPref = 
    (CheckBoxPreference) getPreferenceManager().findPreference("othercheckboxpreff");

    //Set a listener to the checkbox
    otherCheckboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {  

       public boolean onPreferenceChange(Preference preference, Object newValue) {
           //Retrieve the 'checkboxinternet'
           CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxinternet");   
           //If it's checked, set the 'checkboxinternet' Enabled property to true
           if (newValue.toString().equals("true"))
           {  
                checkboxPref.Enabled = true;
           } 
           //Else , set it to false
           else 
           {  
                checkboxPref.Enabled = false;
           }
           return true;
        }
     });
于 2012-09-21T20:07:08.957 回答