2017-08-15 170 views
0

我將一些String數據保存到SharedPreferences,但不幸的是我無法從sharedPreferences獲取字符串值。無法從SharedPreferences獲取字符串值

這是我的代碼來將數據保存到SharedPreferences

SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE); 
userPhone = etPhone.getText().toString(); 
prefs.edit().putString("userPhone", userPhone).apply(); 

這完全節省了我的電話號碼,但是當我嘗試在接下來的活動來獲取它,我得到這個字符串,而不是「USERPHONE」

這我是如何檢索字符串值

String phoneNumber = prefs.getString(Config.PREF_NAME, "userPhone"); 
Log.i("number", phoneNumber); 

我的日誌顯示phoneNumber的作爲一個字符串,而不是日來自我保存到sharedPrefrences的用戶輸入的e值。

回答

1

對於存儲的值到您正在使用編輯器和方法調用SharedPreferences:

prefs.edit()putString(String鍵,字符串值)

你這樣做是正確的:

prefs.edit()。putString(「userPhone」,userPhone).apply();

用於檢索數據中,我們使用相同的密鑰,因爲我們用於存儲。在你的情況下,它是「用戶電話」。 所以,你應該這樣做:

prefs.getString(「userPhone」,「Some default value」);

但是,你喜好的名字混合鍵,你叫

prefs.getString(Config.PREF_NAME, 「USERPHONE」);

+1

您應該添加一個解釋,他走到哪裏錯了,而不是發佈代碼,希望可以理解的。 – Doomsknight

+1

它爲我工作非常感謝 –

0

它應該看起來像你的第二個活動。

SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE); 
String phoneNumber = prefs.getString("userPhone", "defaultValueIfNoPhoneAvailable"); 
Log.i("number", phoneNumber); 

getString第二個參數是在情況下,它具有用於鍵的映射關係的默認值。

1

以下是區別。 你實際上是從檢索值:

String phoneNumber = prefs.getString(Config.PREF_NAME, "userPhone"); 

但是,你需要做的:

SharedPreferences sharedPreferences = getContext().getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE); 
String phoneNumber = sharedPreferences.getString("userPhone", null);