繁体   English   中英

如何在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值的数据类型。

您放置的所有共享首选项都将插入到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM