我知道之前有人问过,但我似乎无法弄清楚
我试图通过这个来获得我的偏好:
SharedPreferences preferences = this.getActivity().getSharedPreferences("storedName", Context.MODE_PRIVATE);
String loginemail = preferences.getString("storedName", "");
但这似乎不起作用,我有多个sharedPreferences,我需要在我的片段中得到正确的方法吗?
由于getDefaulSharedPreferences(this)
不起作用。
我存储我的prefs就像这样:
savePreferences("shareUniqePass", uniqePassIds.getText().toString());
savePreferences("storedName", inputEmail.getText().toString());
savePreferences("Storedpass", inputPassword.getText().toString());
private void savePreferences(String key, boolean value){
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor checkbox = sharedPreferences.edit();
checkbox.putBoolean(key, value);
checkbox.commit();
}
private void savePreferences(String key, String value){
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor names = sharedPreferences.edit();
names.putString(key, value);
names.commit();
}
答案 0 :(得分:2)
而不是从getSharedPreferences
获取getDefaultSharedPreferences
。
As getDefaulSharedPreferences(this) doesn't work.
您使用getDefaultSharedPreferences
保存数据,因此您必须使用getDefaultSharedPreferences
来获取已保存的数据。
this
表示您的片段实例改为使用getActivity()
从您的活动中获取上下文实例。
<强>样品:强>
String loginemail = PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(PREF_USER_NAME, "");;
答案 1 :(得分:0)
您需要确保从相同的共享偏好设置中保存和加载数据。如果您只从一个活动/片段访问它,则应使用getDefaulSharedPreferences(this)
。
但是,如果你要从几个不同的活动/片段中使用它,你应该使用:
private void savePreferences(String key, boolean value){
SharedPreferences prefs = getActivity().getSharedPreferences("storedName", Context.MODE_PRIVATE);
Editor checkbox = sharedPreferences.edit();
checkbox.putBoolean(key, value);
checkbox.commit();
}