2011-12-04 26 views
1

我有一對夫婦的CheckBoxPreferences成立,我的愛好級別的擴展PreferenceActivity並實現OnSharedPreferenceChangeListener 這是我使用的人檢查/取消選中CheckBoxPreferences迴應什麼:CheckBoxPreference - onSharedPreferenceChanged方法沒有得到所謂的

public void onSharedPreferenceChanged(SharedPreferences P, String K) { 
    if (K.equals(CheckBoxPref_KEY_HERE)) { 
     MyClass.BooleanVariable = P.getBoolean("CheckBoxPref_KEY_HERE", true); 
    } 
} 

據我所知,上面的onSharedPreferenceChanged方法甚至沒有被調用?

+0

很多apreciated!我不知道如何改變'MainClass.BooleanVariable'的值... 我有:'MainClass.BooleanVariable = P.isEnabled();'但似乎**總是**啓用? o_O – ZOMGbies

回答

0
checkBoxPreference = (CheckBoxPreference) this.findPreference("CheckBoxPref_KEY_HERE"); 

checkBoxPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
    @Override 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
      // do your work here 
      return true; 
     } 
    }); 
1

這裏是SOLN,如果你想要做的事上的所有喜好:

創建一個類成員:

SharedPreferences settings; 
在onCreate方法

settings = getSharedPreferences(<your_pref_name>, 0); 
settings.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() { 
    @Override 
    public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key) { 
    // Do whatever 
    } 
}); 
+0

如何取消註冊? –

+0

這裏是取消註冊API http://developer.android.com/reference/android/content/SharedPreferences.html#unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener) – havexz

+0

總的來說,沒有爲我工作。這裏是我的問題http ://stackoverflow.com/questions/13321637/whats-different-between-onpreferencechangelistener-and-onsharedpreferencechange/ –

相關問題