PrefsActivity修改配置后立即生效。

extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener 
这样的Activity需要覆盖方法:public void onSharedPreferenceChanged(SharedPreferences options, String key) ;
然而 如果只是这样,在当前的Activity是不会生效的。
需要覆盖两个方法:
@Override
    protected void onResume() {
        super.onResume();
        // Set up a listener whenever a key changes
        getPreferenceScreen().getSharedPreferences()
            .registerOnSharedPreferenceChangeListener(this);
    }

    @Override

    protected void onPause() {
        super.onPause();
        // Unregister the listener whenever a key changes
        getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
    }

然后在onSharedPreferenceChanged里面可以得到修改的内容,否则是无法得到修改的变化的。
可能的原因猜想是因为没有flush,所以配置修改一个不会发生改变。

猜你喜欢

转载自phenom.iteye.com/blog/1631797