我知道我可以获得 Preference.OnPreferenceChangeListener
如果我想在 SharedPreferences
中更改首选项之前执行一些代码。
我正在编写一个从互联网获取一些文本的应用程序。它可以用多种语言来实现这一点,用户可以使用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
}
});
关于java - 更改首选项后执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476741/