【问题标题】:Android not saving sharedPrefs [duplicate]Android不保存sharedPrefs [重复]
【发布时间】:2016-04-14 04:38:03
【问题描述】:

所以我只是想保存一个字符串。但每次我重新运行应用程序时,我都会为保存的字符串得到 null :/ 我 100% 确定我正在调用 save 方法,并且字符串它保存时不为空。

public class CFUser {

private final static String ID_KEY="myUserID";
private static String userID;

public static String getUserID(Context context) {
    if(userID==null) {
        SharedPreferences prefs= context.getApplicationContext().getSharedPreferences(ID_KEY, 0);
        userID=prefs.getString(ID_KEY, null);
        }

    return userID;
}
public static void setUserID(String id, Context context) {
    userID=id;
    Log.d("saving", id);
    SharedPreferences prefs=context.getApplicationContext().getSharedPreferences(ID_KEY, 0);
    prefs.edit().putString(ID_KEY, userID);
    prefs.edit().apply();
}
public static boolean isLoggedIn(Context context) {
    return getUserID(context)!=null;
}

}

非常感谢!

【问题讨论】:

  • editor.commit();
  • @MD: commit()apply() 的工作方式相同,不同之处在于apply() 是异步的(因此在这种情况下建议使用)。
  • @TobiasBaumeister 完全同意!!!

标签: android


【解决方案1】:

在这段代码中,您创建了两个不同的SharedPreferences.Editor 对象:

SharedPreferences prefs=context.getApplicationContext().getSharedPreferences(ID_KEY, 0);
prefs.edit().putString(ID_KEY, userID);
prefs.edit().apply();

这意味着您将字符串放入Editor1,但正在提交Editor2 的(不存在的)更改。
你需要这样做:

SharedPreferences prefs=context.getApplicationContext().getSharedPreferences(ID_KEY, 0);
SharedPreferenced.Editor edit = prefs.edit();
edit.putString(ID_KEY, userID);
edit.apply();

【讨论】:

  • 嗯,你明白了! +1 向上
  • 我已经阅读了至少 3 个关于此的主题,甚至没有想到我犯了这么愚蠢的错误。非常感谢!
【解决方案2】:

目前,由于您检索 SharedPreferences 的方式,整个 SharedPreferences 文件的名称为 myUserID。而是使用以下内容。这不会导致问题,但我假设您不希望 SharedPreferences 文件作为您的 ID 密钥...

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

然后,当您写入首选项时,请确保您使用的是相同的 Editor

Editor editor = preferences.edit();
editor.putString(ID_KEY,userID);
editor.apply();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多