android - sharedPreferences change listener in fragment not firing -


i have following oncreateview fragment

public static final string sharedpreferences = "crmpreffiles";  public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         // inflate layout fragment         final view layout=inflater.inflate(r.layout.fragment_item_fragment1, container, false);         sharedpreferences prefs = getactivity().getsharedpreferences(sharedprefefrences, 0);         sharedpreferences.onsharedpreferencechangelistener listener = new sharedpreferences.onsharedpreferencechangelistener() {             public void onsharedpreferencechanged(sharedpreferences prefs, string key) {                  populatepage(layout);             }         };         prefs.registeronsharedpreferencechangelistener(listener);         return layout;     } 

in activity uses fragments preferences edited values grabbed via webservice call. why use onchangelistener. fragment created before preferences edited.

final sharedpreferences settings = getsharedpreferences(sharedpreferences, 0); sharedpreferences.editor editor = settings.edit(); editor.putstring("frag_" + pagenum, record.getstring("group")); editor.commit(); //commit changes 

it appears problem has listener not detecting change made in activity creates fragment itself.

the activity hosts fragments gets values sharedpreferences , sets them. supposed caught in fragment , call method. reason listener isn't detecting changes.

when output preference gets edited in toast message incorrect value, when go , re-enter activity has correct value, tells me it's being updated after fragment created reason listener isn't firing.

according android documentation:

caution: preference manager not store strong reference listener. must store strong reference listener, or susceptible garbage collection. recommend keep reference listener in instance data of object exist long need listener.

storing listener instance variable should fix problem. ensure adding listener before getting data webservice call.


Comments

Popular posts from this blog

java - Static nested class instance -

c# - Bluetooth LE CanUpdate Characteristic property -

JavaScript - Replace variable from string in all occurrences -