2014-09-30 177 views
3

當前我想在我的Android應用程序中存儲兩種不同的數據類型作爲SharedPreference。是否可以使用相同的鍵值存儲它們?具有相同ID的Android兩種不同的SharedPreference類型

如:

int id = 123; 
myBoolean = false; 
myString = "hello"; 

SharedPreferences.Editor edit = this.getSharedPreferences("MyPrefs", MODE_PRIVATE).edit(); 
edit.putString(String.valueOf(id), myString); 
edit.putBoolean(String.valueOf(id), myBoolean); 

,因爲目前,當我試圖讓字符串值,我收到了ClassCast例外這裏:

SharedPreferences settings = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
String myString = settings.getString(String.valueOf(123), "def"); 

我得到這個異常:

java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String 
+0

你上次使用布爾值,所以你必須使用getBoolean - String.ValueOf(settings.getBoolean(String.valueOf(123),「def」)); – 2014-09-30 16:47:41

+0

我想你誤會了,我希望myString的結果是「你好」,而不是布爾值 – Marcus 2014-09-30 16:49:35

+0

哦,我認爲你不能這樣做 – 2014-09-30 16:50:14

回答

5

這是不可能的,共享首選項是一個關鍵值對(關鍵是唯一的)。你的代碼做的是取代以前保存的值。所以,當你試圖獲得值時你會收到一個布爾值。

+0

是的,它似乎沒有比這更好! – Marcus 2014-09-30 16:52:42