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;
}
}
我正在为 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;
}
}