2012-09-21 55 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

崩潰時會出現什麼異常? –