Have following setup:
MainActivity class - extends activity
MyLayout class - extends View
Prefs class - extends PreferenceActivity and implements OnSharedPreferenceChangeListener
MainActivity creates a MyLayout class and sets it as its contentview. Once the user presses on the menu, Prefs class starts where the user can change some settings.
What I want is that, once the user changes a setting, the overloaded OnsharedPreferenceChanged method in the Prefs class will be called and from there I would like to invoke public methods on the MyLayout class that was created in the MainActivity.
How can I do this?
Try making
MainActivity
implementOnSharedPreferenceChangeListener
and register it on theonCreate()
method as Falmarri said.Don't overload onSharedPreferenceChanged method in preferenceactivity. Get an instance of the shared preference in your MainActivity, and then register an onsharedpreferencechangedlistener on that inside of your mainactivity
And then you can create a new preference listener
You should also unregister the listener in onPause() unless you need it to persist, otherwise unregister it on onStop()