未正确调用Android setOnPreferenceChangeListener

未正确调用Android setOnPreferenceChangeListener,android,listener,Android,Listener,我的首选项屏幕中有一个ListPreference,当它发生变化时,我需要执行一个方法。问题是,当我第一次更改首选项列表时,什么也没发生,但它在第二次更改时起作用 public static class DisplayFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { cPPreference cPBg; cPPreference

我的首选项屏幕中有一个ListPreference,当它发生变化时,我需要执行一个方法。问题是,当我第一次更改首选项列表时,什么也没发生,但它在第二次更改时起作用

 public static class DisplayFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {

    cPPreference cPBg;
    cPPreference cPFt;
    cPPreference cPTm;
    cPPreference cPLg;
    ListPreference colorThemeList;

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

        cPBg = (cPPreference) getPreferenceScreen().findPreference("ambilBg");
        cPFt = (cPPreference) getPreferenceScreen().findPreference("ambilFt");
        cPTm = (cPPreference) getPreferenceScreen().findPreference("ambilTm");
        cPLg = (cPPreference) getPreferenceScreen().findPreference("ambilLg");

        /**
        * When this list changes I need to exectue a method
        */
        colorThemeList = (ListPreference) getPreferenceScreen().findPreference("colorTheme");
        colorThemeList.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                ThemeHandler.setTheme(cPBg, cPFt, cPTm, cPLg, colorThemeList.getValue());
                return true;
            }
        });

    }


    @Override
    public void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(this);                
    }

    @Override
    public void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences()
                .unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {         
        setSummarys();
    }
}
非常感谢任何帮助

好的…找到了解决方案

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

        if (key.equals("colorTheme")) {
            ThemeHandler.setTheme(colorPickerBg, colorPickerFt, colorPickerTm, colorPickerLg, colorThemeList.getValue());
        }
    }
OnSharedPreferneChanged方法中的一个简单检查:)