Where to store Android preference keys? Where to store Android preference keys? android android

Where to store Android preference keys?


I've found that it's possible to store keys in strings.xml and refer to them from preferences.xml just like all other values android:key="@string/preference_enable".

In code you can refer to key by typing getString(R.string.preference_enable)

You can mark the string to not be translated using a <xliff:g> tag. See Localization Checklist

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


You could use a "keys.xml" files in "res/values", but should put something like this, this way you should dont have problem when you are using multiple languages:

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

Then you could reference it like a normal string in xml:

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

or in your java code for example:

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


In strings.xml mark the key as untranslatable:

<string name="screw_spacing_key" translatable="false">Screw spacing</string><string name="screw_spacing_title">Screw spacing</string><string name="screw_spacing_summary">Set screw spacing</string>

Usage:

<EditTextPreference    android:key="@string/screw_spacing_key"    android:title="@string/screw_spacing_title"    android:summary="@string/screw_spacing_summary"/>

See: Configure untranslatable rows