我在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");
我的代码有问题吗? 还有更好的写这个吗?
答案 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();