Intereting Posts
Несколько экземпляров запуска одного и того же приложения в kitkat android Плохие «патчи» в 9-патч-файле Как повысить согласованность уведомлений о входе / выходе Android geofence? Используйте панель инструментов для всех видов деятельности (Android) Android Webview, настройка Long Click включена исключительно для ссылок? Android два AsyncTasks серийно или параллельно? – Вторая заморозка, но результат в порядке Как ускорить работу Android Studio на Mac Пакет обеспечения совместимости Android не включает Activity.getFragmentManager () Закусочная в библиотеке поддержки не включает OnDismissListener ()? Как собрать собственную стеклу без страшного разрешения READ_LOGS? Просмотр Recycler не прокручивается должным образом после реализации салфетки для обновления макета Прокручиваемый макет в Android Выполнение покупок в приложении с учетной записью Google Play отличается от основной учетной записи устройства Как я могу настроить программу Launcher программно в android? Как сделать проверку формы в android

Как перебирать все ключи общих настроек?

У SharedPreferences есть метод getAll, но он не возвращает никаких записей, несмотря на то, что существуют некоторые ключи:

PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress"); 

Возвращает true

 Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll(); 

Возвращает пустую карту

Что не так? Как получить список всех общих настроек?

Solutions Collecting From Web of "Как перебирать все ключи общих настроек?"

Что вы можете сделать, это использовать getAll() SharedPreferences и получить все значения в Map<String,?> затем вы можете легко выполнить итерацию.

 Map<String,?> keys = prefs.getAll(); for(Map.Entry<String,?> entry : keys.entrySet()){ Log.d("map values",entry.getKey() + ": " + entry.getValue().toString()); } 

Для получения дополнительной информации вы можете проверить PrefUtil.java's dump() PrefUtil.java's .

Я думаю, что этот вопрос больше связан с тем, почему

  PreferenceManager.getDefaultSharedPreferences(this).getAll() 

Возвращает пустое / противоречивое отображение, чем с тем, как перебирать стандартную java-карту. Андроид-док на самом деле не очень ясен о том, что здесь происходит, но в основном это похоже на первый звонок когда-либо

  PreferenceManager.setDefaultValues(this, R.xml.preferences,false) 

– это то, что вы должны вызвать для инициализации предпочтений при запуске своего приложения, – создает какую-то кешированную версию ваших предпочтений, которая заставляет будущие изменения в вашем файле настроек xml быть несовместимым, т. Е. Вызывая несоответствие вам Описанный в вашем вопросе.

Для сброса этого «кэшированного объекта», выполните следующие действия (которые вы можете выбрать из приведенной выше ссылки):

  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.edit().clear(); PreferenceManager.setDefaultValues(this, R.xml.preferences, true);