Tylko klucze CheckboxPreference z Androidem: defaultValue = "true" będą wyświetlane w poniższym kodzie. Więc żaden z kluczy z defaultValue = "false" nie są wyświetlane. Jak mogę uzyskać listę wszystkich kluczy w moim pliku preferencji?SharedPreferences.getAll() nie ma kluczy preferencji, które są fałszywe. Jak odzyskać wszystkie klucze?
PreferenceManager.setDefaultValues(this,R.xml.settings,true); //readAgain=false is same result
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);
Map<String, ?> prefMap=prefs.getAll();
for(String key:prefMap.keySet()) {
Log.d("preference key=",key); //only keys with true are shown
}
}
Zgodnie z docs getAll() powinna: "Pobierz wszystkie wartości z preferencji." Jednak wydaje się, że klucze mają wartość default = true, chyba że preferencja została ustawiona później przez użytkownika.
EDYTOWANIE: This is likely related to Android Bug: 6441, ale nie daje mi obejścia, aby uzyskać wszystkie klucze.
Jeśli nie ma wartości domyślnej, a nie wartość firmy to nie jest we wspólnym preferencje. jeśli chcesz wszystkie zdefiniowane preferencje, może powinieneś powtórzyć swój plik preferencji xml. – Ran
@ Ran-> Te preferencje mają android: defaultValue = false, więc jest to wartość. – Fraggle