在 PreferenceScreen 和代码中共享设置名称和默认值
Sharing setting names and default value in PreferenceScreen and Code
我有我的 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 和代码共享的键、标题和默认值找到一个共同的位置。
我有我的 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 和代码共享的键、标题和默认值找到一个共同的位置。