I\'ve been stuck on this very simple problem for hours now and Ive been unable to find any suitable solutions through google.
I am trying to use the SharedPreference
Where do you instantiate your Model class?
Just pass either a context or the SharedPreferences to the constructor:
public class Model {
private final Context context;
private final SharedPreferences sharedPrefs;
public Model(Context context) {
this.context = context;
sharedPrefs = context.getSharedPreferences("name", 0);
}
private String doSomething(){
return sharedPrefs.getString("key", "defValue");
}
}
You can use SharedPrederences from any code that holds a Context. From the Activity documentation at http://developer.android.com/reference/android/app/Activity.html:
Activity persistent state is managed with the method getPreferences(int), allowing you to retrieve and modify a set of name/value pairs associated with the activity. To use preferences that are shared across multiple application components (activities, receivers, services, providers), you can use the underlying Context.getSharedPreferences() method to retrieve a preferences object stored under a specific name. (Note that it is not possible to share settings data across application packages -- for that you will need a content provider.)
SharedPreferences
isn't called only from Activity
, but from Context
(which Activity
extends) so you can use the application context as well.