在更改首选项后执行代码

时间:2015-04-06 17:58:55

标签: java android sharedpreferences android-preferences

我知道如果我想在 SharedPreferences中更改首选项之前执行某些代码,我可以获得Preference.OnPreferenceChangeListener

我正在编写一个从互联网上获取一些文本的应用程序。它可以在多种语言中执行此操作,并且用户使用Preference选择他想要查看的语言。当数据发生变化时,我需要使用新语言再次获取文本。

要获取此文本,我使用静态方法,该方法不将语言作为参数(它使用SharedPreferences获取)。这意味着从OnPreferenceChangeListener调用此方法对我没有帮助,因为此时偏好尚未保存。

更改首选项后,是否可以使用不同的侦听器来执行代码?或者我应该只是添加代码来自己在监听器中手动将更改提交给SharedPreferences

1 个答案:

答案 0 :(得分:1)

覆盖onSharedPreferenceChanged()中的registerOnSharedPreferenceChangeListener()方法并在那里调用静态方法。保存首选项后会调用它。

以这种方式使用:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedPreferences.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
      @Override
      public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
            // Do your stuff
      }
});