[英]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值的数据类型。
您放置的所有共享首选项都将插入到Map中。 地图不能包含包含不同值的重复键。 当您使用put操作时,如果它们的键已经存在于映射中,它基本上会覆盖与键关联的值。 您可以在这里找到Map“put”方法的工作原理 - Java Map
因此,检查@Maloubobola建议的两个(或多个)数据类型的instanceof有点荒谬,因为密钥只能有一个值,而且该值只能是一种数据类型(您应该知道:P)。 你可以做到这一点,但它没有像@Blackbelt评论那样有意义。
祝一切顺利 :)
如果您期望String,您还可以使用try / catch子句:
try {
String strValue = sharedPreferences.getString("key_name","default value")
actionIfString();
} catch (ClassCastException e) {
actionIfNotString();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.