onPreferenceChange method isn't called when Listpreferences changes

拟墨画扇 提交于 2019-12-10 03:10:28

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/13667088/onpreferencechange-method-isnt-called-when-listpreferences-changes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!