我有我的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
两次。
有没有办法分享它们(例如在一些公共资源中),所以我可以轻松地重构它们而无需在两个地方进行重构?
找到了这样做的方法
我在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和代码共享的密钥,标题和默认值提供一个共同的位置。