我在一个类中(这个类没有继承Activity)使用SharedPreferences,
public class UserModel implements IUserModel{
@Override
public void setName(String name) {
}
@Override
public void setPassword(String password) {
}
@Override
public UserBean getUserBean(String name) {
return null;
}
private void build() {
//_1_建立相应的对象
SharedPreferences p ;
SharedPreferences.Editor e ;
//_2_绑定到具体的文件
p = getSharedPreferences("example", MODE_PRIVATE) ;
e = p.edit() ;
// 未完成。。。。。
}
}
发现build方法里面的getSharedPreferences是红色的,就是不能调用。。。郁闷了
然后我把这个类继承了Activity,然后就可以了。。。
这个是为什么。。。求大神解答。。。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为每个 app 的 SharedPreferences 是独立的,所以自然需要指定
Context才可以getSharedPreferences。你可以把
Context传进来,然后用context.getSharedPreferences。来自于:http://www.cnblogs.com/CoolChen/archive/2011/11/01/2230988.html
getSharedPreferences是依赖于上下文环境的,也就是context,所以不管你在哪个类中,一定要通过activity类的context才能调用。你可以这样,比如activity中实例化的你类,在new这个自定义类的时候,将activity的this当做参数传入,类型是context,然后在自定义类中记录下来,context.getSharedPreferences()就可以在你的类中这样调用了。
PS:在activity的setContextView之后再实例化自己的类,这样activity.this才不是空。
我的解决方法:
新建了一个自定义的类:saveObject.class
然后在Activity启动的时候,把该Activity的Content传递进去
在别处就可以通过 getContent 方法取出来了。