具有相同ID的Android两种不同的SharedPreference类型
问题描述:
当前我想在我的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
是的,它似乎没有比这更好! – Marcus 2014-09-30 16:52:42
你上次使用布尔值,所以你必须使用getBoolean - String.ValueOf(settings.getBoolean(String.valueOf(123),“def”)); – 2014-09-30 16:47:41
我想你误会了,我希望myString的结果是“你好”,而不是布尔值 – Marcus 2014-09-30 16:49:35
哦,我认为你不能这样做 – 2014-09-30 16:50:14