Как установить значение по умолчанию для SwitchPreference в android?

кто-нибудь использовать SwitchPreference класс от android и знает, как установить значение по умолчанию? Я реализовал его программно:

SwitchPreference switch = new SwitchPreference(this);
switch.setKey("preference_my_key");
switch.setTitle(R.string.preference_title_my_title);
switch.setSummary(R.string.preference_summary_my_summary);
Boolean isChecked = Manager.myMethodIsChecked(MyActivity.this);
switch.setChecked( isChecked ); 

switch.setOnPreferenceChangeListener(new OnPreferenceChangeListener()  {                
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
    try {
            boolean selected =   Boolean.parseBoolean(newValue.toString());      
        if ( !selected ) {
            //do something
        }
    } catch (Throwable e) {
       e.printStackTrace();
    }               
   return true;
   }
});         
category.addPreference(switch);

Preferences сохраняет все значения в свой xml-файл:app_package_name_preferences.в XML.
Первый раз, когда приложение загружается, переключатель имеет значение по умолчанию "false " ценности.
Но иногда мне нужно сделать значение по умолчанию"правда".
Я пробовал несколько методов,но ничего завод.

switch.setChecked( true );  
switch.setDefaultValue(true);

пожалуйста, помогите мне, если кто-то знает, как установить это значение по умолчанию. Заранее спасибо Лидия!--4-->

2 ответов


Я нашел решения для своей проблемы и опубликую его, если у кого-то есть такая же проблема.

Как я уже сказал, я пишу настройки программно

PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
PreferenceCategory catView = new PreferenceCategory(this);
catView.setTitle(R.string.preference_category_view);
root.addPreference(catView);

final SwitchPreference switchSplash= new SwitchPreference(this);
switchSplash.setKey(PreferenceKeys.SPLASH); 
//-----the above code----
switchSplash.setChecked(false);       //   LINE 1

catView.addPreference(switchSplash);  //   LINE 2

в debug я обнаружил, что правда значение в строка 1, но когда я добавить switchSplash на catView значения switchSplash сброс false, потому что catView устанавливает значения из prefereces XML.
Вот почему я изменил все необходимые значения в xml

SharedPreferences.Editor editor = root.getPreferenceManager().getSharedPreferences().edit();
editor.putBoolean(PreferenceKeys.SPLASH, true);  
editor.commit();

вот именно.


Если вы пытаетесь получить логическое значение из newValue

        boolean selected =   Boolean.parseBoolean(newValue.toString());      

вы идете об этом странным и, я думаю, неправильным образом. Если newValue является логическим, (проверьте с помощью instanceof), то просто приведите newValue к логическому.

        boolean selected =   (Boolean) newValue;

это то, чего вы пытаетесь достичь?