Как получить объект типа предпочтения в Android?
Я могу получить String
из общих предпочтений, используя:
sharedPreferences.getString("key_name","default value");
Но как я могу проверить, является ли key_name
На самом деле String
?
Что, если это булево ключевое значение?
Есть ли метод, который мы можем использовать, например:
if(sharedPreferences.isTypeOf(Boolean,"key_name")) {}
3 ответа:
Если вы знаете, что получите логическое значение, вы можете использовать
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
Таким образом, проверка instanceof для двух (или нескольких) типов данных как предложенный @Maloubobola, является своего рода абсурдом, так как ключ может иметь только одно значение, и это значение может иметь только один тип данных (который вы должны знать :P). Вы можете сделать это, но это не имеет смысла, как прокомментировал @Blackbelt.
Всего наилучшего:)