onPreferenceChange method isn't called when Listpreferences changes

11,074

Change your onCreate code to:

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   addPreferencesFromResource(R.xml.prefs);  

   SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
   prefs.registerOnSharedPreferenceChangeListener(this);
}

You are not adding the registerOnSharedPreferenceChangeListener to PrefsActivity Activity.

Share:
11,074
Reza_Rg
Author by

Reza_Rg

Mobile App(Android/iOS) developer.

Updated on July 18, 2022

Comments

  • Reza_Rg
    Reza_Rg almost 2 years

    I have a Preferences Activity in my code. I want to show a toast when ever user change radio button in a ListPreferences. I used this code but it does not work. :(

    public class PrefsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.prefs);   
        }
    
        public void onSharedPreferenceChanged(SharedPreferences arg0, String key) {
    
            ListPreference listPreference = (ListPreference) findPreference(key);
            listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    // TODO Auto-generated method stub
                    Toast.makeText(PrefsActivity.this, "second", Toast.LENGTH_LONG).show();
                    return false;
                }
            });
        }
    }
    

    what is my problem?

  • Reza_Rg
    Reza_Rg over 11 years
    Yes! That was my mistake, Thank you. :)
  • Reza_Rg
    Reza_Rg over 11 years
    now, I have another problem. :( when i click on one of radio buttons in listpreferences, it toast what i want, but it dose not update value in listpreferences.
  • Mr_and_Mrs_D
    Mr_and_Mrs_D over 11 years
    @Reza_Rg : you return false from onPreferenceChange - lol - did you read what it does ? - at ρяσѕρєя K - why not unregistering ?
  • Reza_Rg
    Reza_Rg over 11 years
    @Mr_and_Mrs_D Unregister what ?