2016-03-10 206 views
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; 
} 
+0

如果你打算存儲那麼多的數據,那麼將它們存儲在SQLite而不是共享首選項中可能是一個更好的主意 –

回答

2

你得到錯誤key這裏。它必須是LoggedIn而不是loggedIn。所以你的代碼應該是:

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