Fragment中的sharedPreferences

时间:2014-06-16 21:02:08

标签: android android-fragments sharedpreferences

我知道之前有人问过,但我似乎无法弄清楚

我试图通过这个来获得我的偏好:

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();
}

2 个答案:

答案 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();
}