更改首选项后执行代码

Executing code after a preference has been changed

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

我正在编写一个从 Internet 获取一些文本的应用程序。它可以用多种语言做到这一点,用户可以使用 Preference 选择他想看的语言。当数据更改时,我需要使用新语言重新获取文本。

为了获取此文本,我使用了一个不将语言作为参数的静态方法(它使用 SharedPreferences 获取它本身)。这意味着从 OnPreferenceChangeListener 调用此方法对我没有帮助,因为此时首选项尚未保存。

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

重写 registerOnSharedPreferenceChangeListener() 中的 onSharedPreferenceChanged() 方法并调用那里的静态方法。保存首选项后调用它。

这样使用:

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