无法从Android中的sharedprefs读取

时间:2015-11-04 22:57:20

标签: android sharedpreferences

我无法找到导致问题的原因是从共享首选项中读取数据。以下是代码:

SharedPreferences setting = getSharedPreferences("loginSuccess", MODE_PRIVATE);
        SharedPreferences.Editor mPrefsEditor = setting.edit();
        mPrefsEditor.putString("userid", profile.getId());
        mPrefsEditor.putString("userFirstName", profile.getFirstName());
        mPrefsEditor.putString("userLastName", profile.getLastName());
        mPrefsEditor.putString("userPictureUri", profile.getProfilePictureUri(200, 200).toString());
        mPrefsEditor.commit();

当我检查手机上的shared_prefs文件夹时,我看到数据像

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="userFirstName">Blah</string>
    <string name="userPictureUri">https://graph.fac.....er_2012%3Atrue%7D</string>
    <string name="userLastName">BlahBlah</string>
    <string name="userid">546468168*****245</string>
</map>

当我尝试阅读时,

SharedPreferences setting = getSharedPreferences("loginSuccess", MODE_PRIVATE);
        String userid = setting.getString("userid", null);

但是,当我将文本放在TextView上时,我得到null。

2 个答案:

答案 0 :(得分:0)

改变这个:

SharedPreferences setting = getSharedPreferences("loginSuccess", MODE_PRIVATE);

为:

SharedPreferences setting = getSharedPreferences("loginSuccess", Context.MODE_PRIVATE);

如果不在android中使用上下文,则无法访问共享首选项的模式。

更多参考:http://developer.android.com/training/basics/data-storage/shared-preferences.html

答案 1 :(得分:0)

好的发现了问题。如文档中所提供的那样,在读取参数0时(&#34; loginSuccess&#34;, 0 )应该写入而不是 MODE_STH 以下是我从另一个活动中读取sharedPref的工作代码。

SharedPreferences settings = getSharedPreferences("loginSuccess", 0);
userid = settings.getString("userid", "default");