Использование Android-аннотаций. Мои предпочтения:
@SharedPref(value = SharedPref.Scope.APPLICATION_DEFAULT)
public interface MyPreferences {
@DefaultBoolean(true)
boolean myOption();
}
preferences.xml
:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="myOption"
android:title="My Option Name"/>
</PreferenceScreen>
My PreferencesActivity
:
public class MyPreferencesActivity extends PreferenceActivity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
Проблема в том, что, несмотря на то, что значение myOption
по умолчанию равно true (и действительно - оно есть при вызове MyPreferences_.myOption().get()
), флажок в настройках активности по умолчанию не установлен.
То же самое происходит с настройками String
. Они возвращают строку по умолчанию, указанную в аннотации @DefaultString
, но она не отображается в PreferenceActivity. Только после того, как я изменю значение предпочтения из действия, оно отображается правильно.