在Android错误中使用共享首选项时获取旧数据?

时间:2014-02-20 11:04:24

标签: android

我在多个活动中获得Sharedpreference值,有时我从android中的共享首选项中获取旧值,我创建了自己的首选项文件来存储loginid / pass等。 什么是可能的错误原因????

我在这里创建代码

public void openPref() {

    sharedPreferences = context.getSharedPreferences("abc",Context.MODE_PRIVATE);
}

用于设置和获取功能

public String getValue(String key, String defaultValue) {
        openPref();
        String result = sharedPreferences.getString(key, defaultValue);

        if (result != null)
            result = decrypt(key, result);

        sharedPreferences = null;
        return result;
    }

    public void setValue(String key, String value) {
        if (value != null)
            value = encrypt(key, value);

        openPref();
        Editor prefsPrivateEditor = sharedPreferences.edit();
        prefsPrivateEditor.putString(key, value);
        prefsPrivateEditor.commit();
        prefsPrivateEditor = null;
        sharedPreferences = null;
    }

设置值

Pref objPref = new Pref(getApplicationContext());
objPref.setValue(Pref.abc, 'abc');

获取价值

Pref objPref = new Pref(getApplicationContext());
objPref.getValue(Pref.abc, null)

问题

我正在从两个不同的活动中设定abc值,但是, 每件事情都运作良好,但有时它会在我的Android应用程序中突然变老。

1 个答案:

答案 0 :(得分:0)

您的sharedPreferences对象已旧。每次你需要从中获取数据时再次初始化

  sharedPreferences = context.getSharedPreferences("abc",Context.MODE_PRIVATE);

然后尝试获取数据。由于数据是从其他活动改变的,您需要再次获取它。