android - 今天在用SharedPreferences发现一些问题
PHP中文网
PHP中文网 2017-04-17 15:41:17
[Android讨论组]

问题描述:

我在一个类中(这个类没有继承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,然后就可以了。。。

这个是为什么。。。求大神解答。。。

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
伊谢尔伦

因为每个 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

public class saveObject {
    //定义Content的Activity
    private static Map<String,Context> activityContent = new HashMap<String,Context>();

    /**
     * 保存Activity的Content
     * @param name
     * @param context
     */
    public static void saveContent(String name,Context context) {
        activityContent.put(name,context);
    }

    /**
     * 返回指定的Content
     * @param name
     * @return
     */
    public static Context getContent(String name) {
        return activityContent.get(name);
    }
}

然后在Activity启动的时候,把该Activity的Content传递进去
在别处就可以通过 getContent 方法取出来了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号