Jak uzyskać domyślną wartość preferencji Androida zdefiniowanej w XML? Nie chcę powtarzać definicji wartości domyślnej zarówno w kodzie, jak i w preferencjach XML.Wartość domyślna preferencji Androida
Odpowiedz
Można określić wartość domyślną w zasobach (/values/bool.xml
):
<resources>
<bool name="mypreference_default">true</bool>
</resources>
użyć wartości w preferences.xml
:
<CheckBoxPreference
android:defaultValue="@bool/mypreference_default"
android:key="mypreference"
android:title="@string/mypreference_title" />
Następnie użyj w kodzie:
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
Boolean value = context.getResources().getBoolean(R.bool.mypreference_default);
Boolean b = p.getBoolean("mypreference", value);
Niezły sposób na zrobienie tego. Dzięki za udostępnienie! – pilcrowpipe
Dokładnie tego szukałem, dzięki. Jeszcze jedna wskazówka: Zdefiniuj zasoby spoza łańcucha strings.xml, ale w osobnym pliku (np. Constants.xml), aby uniknąć lokalizacji. – schnatterer
@schnatterer: przenoszenie ciągów znaków do innego pliku nie będzie powodować lokalizacji. Nazwa pliku "strings.xml" jest po prostu konwencją. Każdy zasób można zlokalizować, umieszczając go w odpowiednim podfolderze 'res /'. Chociaż umieszczenie domyślnych ustawień w osobnym pliku zasobów jest prawdopodobnie dobrym pomysłem. –
Najpierw należy zdefiniować wartości domyślne w pliku XML preferencji. Następnie można wypełnić preferencje z wartościami domyślnymi w swojej głównej działalności, wywołując:
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Kiedy trzeba pobrać jakąś preferencję zadzwoń:
int value = prefs.getInt("key", null);
Ponieważ preferencje są wypełniane nie zrobisz uzyskać wartość null
.
To wciąż nie chroni przed ewentualną sytuacją, w której ktoś w dół linię usuwa preferencję z XML i zapomina zaktualizować kod Java żądający tego. W tej sytuacji aplikacja nadal będzie się kompilować, ale skończy się wyjątkiem NullPointerException. – idolize
Tak, to prawda, ale należy zapisać Test funkcjonalny, aby sprawdzić, czy wszystkie potrzebne preferencje są pobierane z XML. – pixel
to w ogóle mi nie pomogło. wartości domyślne nie zostały ustawione po wywołaniu tej metody. – moonlightcheese
Tworzenie integer.xml
pod res/values
do przechowywania stałych całkowitych.
W prefereces.xml
odniesienia "@integer/default_brightness"
W kodzie context.getResources().getInteger(R.integer.default_brightness)
- 1. Preferowany Domyślna wartość dzwonek
- 2. Ustawienia uprzywilejowanych preferencji Androida M:
- 3. Zagnieżdżone ekrany preferencji pod dynamiczną listą preferencji na temat Androida
- 4. Chcę wyczyścić wartość udostępnianej preferencji
- 5. eval "$ (domyślna wartość domyślna docker-machine)"
- 6. Wartość domyślna BOOL
- 7. Wartość domyślna atrybutu JAXB
- 8. Klasy ES6 Wartość domyślna
- 9. Domyślna wartość log4j MDC:
- 10. Domyślna wartość właściwości statycznej
- 11. DataContract, domyślna wartość DataMember
- 12. ansibl with_subelements Wartość domyślna
- 13. Wartość domyślna ComboBox FXML
- 14. Wartość domyślna typu dynamicznego?
- 15. zmień wartość domyślna kolumna
- 16. Android CheckBoxPreference Wartość domyślna
- 17. DependencyProperty Wartość domyślna
- 18. Domyślna strefa czasowa Androida Lista
- 19. Język aktualizacji Androida w działaniu preferencji
- 20. Jak ustawić kolor tekstu podsumowania preferencji Androida?
- 21. Wyświetlanie wspólnych preferencji aplikacji na Androida?
- 22. Python argparse: wartość domyślna lub podana wartość
- 23. Skąd pochodzi domyślna wartość mb_internal_encoding()?
- 24. Wartość domyślna UserControl w usłudze
- 25. Metoda Domyślna wartość array parametr
- 26. Wartość domyślna zmiennych w PHP?
- 27. Wartość domyślna maxConcurrentOperationCount dla NSOperationQueue
- 28. Record Wartość domyślna Składnia akcesor
- 29. combobox wartość domyślna winforms C#
- 30. RestTemplate - domyślna wartość limitu czasu
wysłać plik preferencji xml, czy oznaczać PreferenceScreen – Jorgesys