android共享首选项为null

时间:2016-03-22 15:01:38

标签: android sharedpreferences

我在android中使用shared preference但它返回null, 我看到了很多代码示例,我在代码中看不到任何错误

 SharedPreferences sp =this.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    Log.v("sharedpref",""+username+": "+password);
    editor.putString("email", username);
    editor.putString("pass",password);
    editor.apply();

这里我从共享偏好中检索数据(在另一个活动中)

SharedPreferences sp =this.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
        Log.v("shersend",""+sp.getString("email", "Empty")+": "+sp.getString("pass", "Empty"));

            String email = sp.getString("email", "Empty");

            String pass = sp.getString("pass", "Empty");

我的代码有问题吗? 还有更好的写这个吗?

3 个答案:

答案 0 :(得分:4)

您将首选项保存在一个活动中说A,并且在另一个活动中访问说B,并且两个活动的上下文都不同,因此无法访问首选项值,因为模式是私有的。

this.getApplicationContext().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

答案 1 :(得分:3)

请尝试这种方式,更改此代码块

SharedPreferences sp =this.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

到此代码块

SharedPreferences sp= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

答案 2 :(得分:0)

使用getApplicationContext()

SharedPreferences sp =getApplicationContext().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    Log.v("sharedpref",""+username+": "+password);
    editor.putString("email", username);
    editor.putString("pass",password);
    editor.commit();