0
我正在爲android手機開發一個「book an appointment」應用程序,該應用程序擁有用戶,我有一個用戶類,具有屬性userID,電子郵件,名稱,密碼和電話號碼。我有不同的活動正在使用它。 我想存儲這些數據在Sharedpreference
。但是出錯了,在調試模式下的storeUserData()
中,有user
中的所有數據。並在setUserLoggedIn()
我加入到相同的首選項boolean
,但它不知何故返回false
。而最終的user = null
....不過我打電話setUserLoggedIn
這樣的:android sharedpreferences返回null
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;
}
如果你打算存儲那麼多的數據,那麼將它們存儲在SQLite而不是共享首選項中可能是一個更好的主意 –