#android #android-preferences
#Android #android-настройки
Вопрос:
У меня есть мои настройки PreferenceSettings xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:defaultValue="true"
app:key="notifications"
app:title="Enable message notifications"/>
</androidx.preference.PreferenceScreen>
Чтобы получить значение в коде, я пишу
PreferenceManager.getDefaultSharedPreferences(this).getBoolean("notifications", true)
Отсюда вы можете видеть, что я написал notifications
дважды, а значение по умолчанию true
дважды.
Есть ли способ поделиться ими (например, в некоторых общих ресурсах), чтобы я мог легко реорганизовать их без необходимости делать в двух местах?
Ответ №1:
Найден способ сделать это
Я создаю в values
папке имя файла settings.xml
, которое содержит
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="my_default">true</bool>
<string name="my_title">Enable message notifications</string>
<string name="my_key">notifications</string>
</resources>
В моих настройках настроек у меня просто есть ссылка на эти ключи
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:defaultValue="@bool/my_default"
app:key="@string/my_key"
app:title="@string/my_titleg"/>
</androidx.preference.PreferenceScreen>
И мой код
PreferenceManager.getDefaultSharedPreferences(this).getBoolean(
resources.getString(R.string.my_key),
resources.getBoolean(R.bool.my_default))
При этом у нас могло бы быть общее место для ключа, заголовка и значения по умолчанию, общего для XML и кода.