在PreferenceScreen和Code中共享设置名称和默认值

问题描述 投票:0回答:1

我有我的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两次。

有没有办法分享它们(例如在一些公共资源中),所以我可以轻松地重构它们而无需在两个地方进行重构?

android android-preferences
1个回答
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和代码共享的密钥,标题和默认值提供一个共同的位置。

© www.soinside.com 2019 - 2024. All rights reserved.