我几个小时以来一直坚持这个非常简单的问题,而且我一直无法通过谷歌找到任何合适的解决方案。
我正在尝试在我的应用程序的模型层中使用SharedPreferences类。具体来说,我希望能够在应用程序启动时保存或获取用户名和相应的令牌(如果用户将应用程序设置为自动登录)。
有没有办法让我使用SharedPreferences来解决这个问题,还是我被迫使用FileInput / Output?
答案 0 :(得分:28)
你在哪里实例化你的Model类?
只需将上下文或SharedPreferences传递给构造函数:
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");
}
}
答案 1 :(得分:4)
SharedPreferences
不仅来自Activity
,而是来自Context
(Activity
扩展),因此您也可以使用应用程序上下文。
答案 2 :(得分:0)
您可以使用包含Context的任何代码中的SharedPrederences。来自http://developer.android.com/reference/android/app/Activity.html的活动文档:
使用方法getPreferences(int)管理活动持久状态,允许您 检索和修改与活动关联的一组名称/值对。使用 跨多个应用程序组件共享的首选项(活动, 接收者,服务,提供者),你可以使用底层的Context.getSharedPreferences() 检索以特定名称存储的首选项对象的方法。 (注意它是 不可能跨应用程序包共享设置数据 - 为此你将 需要内容提供商。)