2014-09-30 140 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