【发布时间】:2015-04-06 17:58:54
【问题描述】:
我知道如果我想在SharedPreferences 中更改首选项之前执行一些代码,我可以获得Preference.OnPreferenceChangeListener。
我正在编写一个从 Internet 获取一些文本的应用程序。它可以用多种语言做到这一点,并且用户使用Preference 选择他想看到的语言。当数据发生变化时,我需要使用新语言再次获取文本。
为了获取此文本,我使用了一种不将语言作为参数的静态方法(它使用SharedPreferences 自行获取)。这意味着从OnPreferenceChangeListener 调用此方法对我没有帮助,因为此时尚未保存首选项。
我可以使用不同的侦听器来执行代码在首选项已更改?还是我应该在侦听器中手动添加代码以将更改提交到SharedPreferences?
【问题讨论】:
-
当用户更改语言时更改
SharedPreferences,然后调用您的静态方法。现在你什么时候必须这样做,取决于你如何获取用户的操作。 -
“用户使用偏好选择他想看到的语言”是什么意思?
-
您可以在
registerOnSharedPreferenceChangeListener()中覆盖onSharedPreferenceChanged()。参考这个stackoverflow.com/a/13563870/3498044 -
但是,@Ryan 指出的解决方案(
onSharedPreferenceChanged()在 SharedPreference 对象上)与您在问题中谈论的偏好侦听器不同,并且其中包含有希望的过去时。你检查了吗? -
@miav 感谢您让我注意到这一点,我认为这是我已经研究过的事情。也许我们可以清理这些 cmets,它们对其他人没有用处。
标签: java android sharedpreferences android-preferences