更改首选项后执行代码
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
}
});
我知道如果我想在 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
}
});