2012-09-21 26 views
1

我正在尝试使DefaultSharedPreferences中的项目启用。在DefaultSharedPreferances中启用和选择偏好

中的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 { } 

是这甚至可能,试图改变这些值启用和选择,在寻找到这几天现在,并开始相信这是不可能的。

UPDATE

到目前为止,我得到了下面的部分工作,并时刻复选框得到压制我可以得到它执行的东西。但是,我仍然无法让它工作,使列表或其他复选框启用或可选。

我的代码到目前为止

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); 

那么这将是下一个,我让德获取列表或启用与否的复选框。

回答

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; 
     } 
    }); 
+0

不知怎的,我不能去实现与这一个defaultsharedpreferences东西。 .findPreference()似乎不适用于defaultsharedpreferences。 – Chester

+0

执行此行时:CheckBoxPreference checkboxPref =(CheckBoxPreference)getPreferenceManager()。findPreference(“checkboxinternet”);整个程序崩溃,任何人的想法。 – Chester

+0

崩溃时会出现什么异常? –