2017-09-10 164 views
1

當我使用defaultsharedpreferences保存多個數據時,我發現數據被覆蓋。我對發生的事情感到困惑。從喜好無法從getdefaultsharedpreferences獲得正確的結果

userId is 2 
authorizedHeader is bhlrYXZpbjpseWthdmlu 

和檢索值

userId is 2 
authorizedHeader is 2 

image show the result

private static final String PREF_AUTHORIZED_QUERY = null; 

private static final String PREF_USERID_QUERY = null; 

public static String getStoredUserIdQuery(Context context){ 
    return PreferenceManager.getDefaultSharedPreferences(context) 
      .getString(PREF_USERID_QUERY, null); 
} 

public static String getStoredAuthorizedQuery(Context context){ 
    return PreferenceManager.getDefaultSharedPreferences(context) 
      .getString(PREF_AUTHORIZED_QUERY, null); 
} 

public static void setStoredQuery(Context context, String userId, String authorizedHeader){ 
    PreferenceManager.getDefaultSharedPreferences(context) 
      .edit() 
      .putString(PREF_AUTHORIZED_QUERY, authorizedHeader) 
      .putString(PREF_USERID_QUERY, userId) 
      .apply(); 
} 

回答

1

您使用的值作爲null兩個按鍵的意思是預期值只有一個鍵即null這將覆蓋彼此(PREF_USERID_QUERY將覆蓋以前的值與保存關鍵)

所以給他們重視

private static final String PREF_AUTHORIZED_QUERY = "authorized"; 

private static final String PREF_USERID_QUERY = "userid"; 

你能想象它像

+0

謝謝!有用。那麼關鍵是使用字符串的值? – borderwing

+0

確切地說,你明白了,歡迎 –