Android registerOnSharedPreferenceChangeListener () causes a crash in user view

Whenever I try to add this line, my application crashes. Don't I put it in the right place?

preferences.registerOnSharedPreferenceChangeListener(myActivity.this); 

Here is my class

 class Simulation extends View { // I declare my program variables here public Simulation(Context context) { super(context); // get the preferences SharedPreferences preferences = PreferenceManager .getDefaultSharedPreferences(context); preferences .registerOnSharedPreferenceChangeListener(myActivity.this); String storedPreference = preferences.getString("nPref", "0"); } public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { Log.i(TAG, "preferences changed!"); } } 

Thanks!

+6
source share
2 answers

Do it like

 SharedPreferences.OnSharedPreferenceChangeListener prefListener = new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { if (key.equals("date")) { } } }; 

and

 preferences.registerOnSharedPreferenceChangeListener(prefListener); 
+13
source

In one note on the answer, prefListener should be a class field, not a local variable, or it might receive garbage collection.

SharedPreferences.onSharedPreferenceChangeListener is not called sequentially

+11
source

Source: https://habr.com/ru/post/894785/


All Articles