How to detect if changes were made in the preferences? How to detect if changes were made in the preferences? android android

How to detect if changes were made in the preferences?


Do

SharedPreferences.OnSharedPreferenceChangeListener spChanged = new                           SharedPreferences.OnSharedPreferenceChangeListener() {            @Override    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,            String key) {        // your stuff here    }};

In your PreferenceActivity, ie make it a member of your PreferenceActivity class and then do registerOnSharedPreferenceChangeListener(spChanged) in the PreferenceActivity.onCreate() method.

That's what I do and I never have a problem.

Else it's your conditional checking in the listener that is at fault. Post the code.

EDIT:

From the code you posted, you should make prefs a class member variable so it has a global scope.

And do prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); instead of getSharedPreferences because you haven't created that file.

To create a file you need to use PreferenceManager. To get a PreferenceManager, use Activity.getPreferenceManager().


In your PreferenceActivity class, implement the SharedPreferences.OnSharedPreferenceChangeListener interface. Add the required onSharedPreferenceChanged method to your class and register it in the onCreate.

See sample code here:

public class MyPreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        addPreferencesFromResource(R.xml.fw_preferences); //deprecated        PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);    }    @Override    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {        // handle the preference change here    }}