SquiresSquire
SquiresSquire

Reputation: 2414

ANDROID Preference Activity not setting default value

I have a preference activity and have noticed that a list preference does not set default values when changed.
The Preference has these basic dynamics

When the app first runs default value is set but when I tick the checkbox no values apply after that.

CODE:

public class QuickPrefsActivity extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preferences);

        View title =(View)getWindow().findViewById(android.R.id.title);
        FrameLayout titlebar=(FrameLayout)title.getParent();

        TextView txt = (TextView)titlebar.getChildAt(0);
        txt.setGravity(Gravity.CENTER);

        CheckBoxPreference chckbox = (CheckBoxPreference)
                                 findPreference("french");
        if (chckbox.isChecked()) {
                ListPreference newsPref = (ListPreference)
                                 findPreference("news_feed");
                newsPref.setEntryValues(getResources().
                                  getStringArray(R.array.newsfeedfr));
                newsPref.setDefaultValue(1);
        } else {
                ListPreference news2Pref = (ListPreference)
                                  findPreference("news_feed");
                news2Pref.setEntryValues(getResources().
                                  getStringArray(R.array.newsfeed));
                news2Pref.setDefaultValue(1);
        }
    }
}

Upvotes: 0

Views: 1215

Answers (2)

Priyank Patel
Priyank Patel

Reputation: 12362

you need to add onPreferenceChangeListener like below...

final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("french");

checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {            
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if(newValue.toString().equals("true") {
          // add your code here if checkbox is checked.
        }
        else {
          // add your code here if checkbox is not checked.
        }      
        return true;
    }
}); 

Upvotes: 1

HitOdessit
HitOdessit

Reputation: 7276

Method setDefaultValue() takes an Object as argument, rather than index in values array. So, you should rewrite your code something like this:

String[] values = getResources().getStringArray(R.array.newsfeed)
news2Pref.setEntryValues(values);
news2Pref.setDefaultValue(values[0]);

Moreover, you should probably set entry titles too:

news2Pref.setEntries(your_titles_array_here);

Upvotes: 1

Related Questions