I resolved default values duplication by:
values/preferences_defaults.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="default_myOption">true</bool>
<string name="default_myString">my string</string>
</resources>
Prefs:
@SharedPref(value = SharedPref.Scope.APPLICATION_DEFAULT)
public interface MyPreferences {
@DefaultRes(R.bool.default_myOption)
boolean myOption();
@DefaultRes(R.string.default_myString)
String myString();
}
And the preferences.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="myOption"
android:defaultValue="@bool/default_myOption"
android:title="My Option Name"/>
<EditTextPreference
android:key="myString"
android:defaultValue="@string/default_myString"
android:title="My String Option"/>
</PreferenceScreen>
Now I can define default values for both annotations and PreferenceActivity in one XML file.