android sharedpreferences return 为 null

android sharedpreferences return with null

我正在为 android 手机开发一个 "book an appointment" 应用程序,它有用户 我有一个用户 class,具有用户 ID、电子邮件、姓名、密码和电话号码属性。我有不同的活动正在使用它。 我想将这些数据存储在 Sharedpreference 中。但是出问题了,在debug模式下storeUserData()里面,user里面的数据全都有了。在 setUserLoggedIn() 中,我向相同的首选项添加了 boolean,但不知何故它 returns false。然后结束 user = null... 但我这样调用 setUserLoggedIn

private void logUserIn(User returnedUser) {

    userLocalStore.storeUserData(returnedUser);
    userLocalStore.setUserLoggedIn(true);
}

所以我给它一个 true 值。我错过了什么?我应该如何从 storeUserData 获取这些数据? 这是代码:

public void storeUserData(User user){
    SharedPreferences.Editor userLocalDatabaseEditor = userLocalDatabase.edit();
    userLocalDatabaseEditor.putInt("userID", user.userID);
    userLocalDatabaseEditor.putString("name", user.name);
    userLocalDatabaseEditor.putString("email", user.email);
    userLocalDatabaseEditor.putString("password", user.password);
    userLocalDatabaseEditor.putString("phonenumber", user.phonenumber);
    userLocalDatabaseEditor.commit(); //May I should use apply() ?
}

public void setUserLoggedIn(boolean loggedIn){
    SharedPreferences.Editor userLocalDatabaseEditor = userLocalDatabase.edit();
    userLocalDatabase.getString("name", "");
    userLocalDatabaseEditor.putBoolean("LoggedIn", loggedIn);
    userLocalDatabaseEditor.commit();
}

public User getLoggedInUser(){

    if(userLocalDatabase.getBoolean("loggedIn", false) == false){
        return null;
    }

    int userID = userLocalDatabase.getInt("userID", -1);
    String name = userLocalDatabase.getString("name", "");
    String email = userLocalDatabase.getString("email", "");
    String password = userLocalDatabase.getString("password", "");
    String phonenumber = userLocalDatabase.getString("phonenumber", "");
    //String name, String username, String password, String email, String phonenumber
    User user = new User(userID, name, email, password, phonenumber);

    return user;
}

你在这里弄错了 key。它必须是 LoggedIn 而不是 loggedIn。所以你的代码应该是:

public User getLoggedInUser(){
    if(userLocalDatabase.getBoolean("LoggedIn", false) == false){
        return null;
    }
}