今天在用SharedPreferences发现一些问题
澳门银河官网
澳门银河官网
当前位置 : 澳门银河官网 > 澳门银河官网下载

今天在用SharedPreferences发现一些问题

问题描述:

我在一个类中(这个类没有继承Activity)使用SharedPreferences,

public class UserModel implements IUserModel{

    @Override
    public void setNameString name {
    }

    @Override
    public void setPasswordString password {
    }

    @Override
    public UserBean getUserBeanString name {
        return null;
    }

    private void build {
        //_1_建立相应的对象
        SharedPreferences p ;
        SharedPreferences.Editor e ;

        //_2_绑定到具体的文件
        p = getSharedPreferences"example", MODE_PRIVATE ;
        e = p.edit ;
        
        //    未完成。。。。。
    }

}

发现build方法里面的getSharedPreferences是红色的,就是不能调用。。。郁闷了
然后我把这个类继承了Activity,然后就可以了。。。

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

因为每个 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 saveContentString name,Context context {
        activityContent.putname,context;
    }

    /**
     * 返回指定的Content
     * @param name
     * @return
     */
    public static Context getContentString name {
        return activityContent.getname;
    }
}

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

广告位

澳门银河官网