如何在 Android 中获取偏好的对象类型?
How to get object type of preference in Android?
我可以通过以下方式从共享首选项中获取 String
:
sharedPreferences.getString("key_name","default value");
但是我如何检查 key_name
是否真的是 String
?
如果是布尔键值怎么办?
有没有我们可以使用的方法:
if(sharedPreferences.isTypeOf(Boolean,"key_name")) {}
如果你知道你会得到一个布尔值,你可以使用
sharedPreferences.getBoolean("key_name",true);
否则你可以做(未测试,基于doc)
Map<String, ?> all = sharedPreferences.getAll();
if(all.get("key_name") instanceof String) {
//Do something
}
else if(all.get("key_name") instanceof Boolean) {
//Do something else
}
但是你应该知道你在 SharedPrefrences
中存储了什么
您应该知道 SharedPreference 值的数据类型。
您放置的所有共享首选项都被插入到地图中。
映射不能具有包含不同值的重复键。当您使用 put 操作时,如果键已经存在于映射中,它基本上会覆盖与键关联的值。
您可以在此处找到 Map "put" 方法的工作原理 - Java Map
因此,按照@Maloubobola 的建议检查两种(或多种)数据类型的 instanceof 有点荒谬,因为键只能是一个值,而该值只能是一种数据类型(您应该知道: )。
你可以这样做,但它没有意义,就像@Blackbelt 评论的那样。
祝一切顺利:)
如果您需要一个字符串,您还可以使用 try/catch 子句:
try {
String strValue = sharedPreferences.getString("key_name","default value")
actionIfString();
} catch (ClassCastException e) {
actionIfNotString();
}
我可以通过以下方式从共享首选项中获取 String
:
sharedPreferences.getString("key_name","default value");
但是我如何检查 key_name
是否真的是 String
?
如果是布尔键值怎么办?
有没有我们可以使用的方法:
if(sharedPreferences.isTypeOf(Boolean,"key_name")) {}
如果你知道你会得到一个布尔值,你可以使用
sharedPreferences.getBoolean("key_name",true);
否则你可以做(未测试,基于doc)
Map<String, ?> all = sharedPreferences.getAll();
if(all.get("key_name") instanceof String) {
//Do something
}
else if(all.get("key_name") instanceof Boolean) {
//Do something else
}
但是你应该知道你在 SharedPrefrences
您应该知道 SharedPreference 值的数据类型。
您放置的所有共享首选项都被插入到地图中。 映射不能具有包含不同值的重复键。当您使用 put 操作时,如果键已经存在于映射中,它基本上会覆盖与键关联的值。 您可以在此处找到 Map "put" 方法的工作原理 - Java Map
因此,按照@Maloubobola 的建议检查两种(或多种)数据类型的 instanceof 有点荒谬,因为键只能是一个值,而该值只能是一种数据类型(您应该知道: )。 你可以这样做,但它没有意义,就像@Blackbelt 评论的那样。
祝一切顺利:)
如果您需要一个字符串,您还可以使用 try/catch 子句:
try {
String strValue = sharedPreferences.getString("key_name","default value")
actionIfString();
} catch (ClassCastException e) {
actionIfNotString();
}