在哪里存储安卓偏好密钥?

2022-08-31 15:40:43

当我创建首选项活动时,我在 xml 文件中定义所有首选项。每个首选项都有一个在此 xml 中定义的键。但是当我访问首选项时,我写:

SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean foo_value = appPreferences.getBoolean("foo_key_defined_in_xml", false);

有没有办法避免以硬编码的方式引用“foo_key_defined_in_xml”?也许有可能以R风格的方式引用它(而不是引用字符串)?


答案 1

我发现可以将键存储在字符串中.xml并从首选项中引用它们.xml就像所有其他值一样。android:key="@string/preference_enable"

在代码中,您可以通过键入getString(R.string.preference_enable)

您可以使用标记将字符串标记为不翻译。查看本地化清单<xliff:g>

<string name="preference_enable"><xliff:g id="preference_key">enable</xliff:g></string>

答案 2

您可以在“res/values”中使用“keys.xml”文件,但应该这样放置一些内容,这样当您使用多种语言时,您应该不会遇到问题:

    <resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="MissingTranslation">

    <string name="key1">key1</string>
    <string name="key2">key2</string>
...
</resources>

然后,您可以像 xml 中的普通字符串一样引用它:

....
android:key="@string/key1"
....

或者在你的java代码中,例如:

SwitchPreference Pref1= (SwitchPreference) getPreferenceScreen().findPreference(getString(R.string.key1));

推荐