如何监听片段中的首选项更改?

时间:2015-04-27 18:00:59

标签: android listener

很多类似的问题,但我仍然找不到答案。所以我有一个片段,我想听一下PreferenceActivity的变化。

文档说明要在onResume()中注册听众并在onPause()中取消注册:

  

为了在活动中进行适当的生命周期管理,我们建议您注册和取消注册   在此期间的SharedPreferences.OnSharedPreferenceChangeListener   onResume()和onPause()回调分别为:

我认为他们指的是在PreferenceActivity onResume/onPause方法中注册监听器,因为如果你取消注册片段onPause()中的监听器,那么它将不会监听这些更改。

做反过来的解决方案是这样的 - 即在onPause()中注册并在onResume()中取消注册?

谢谢!

1 个答案:

答案 0 :(得分:-1)

不是PreferenceActivity通知首选项的更改,而是SharedPreferences它自己。 PreferenceActivity是用于访问SharedPreferences

的公用用户界面

因此,如果您的片段需要监听SharedPreferences更改,那么它应该是注册更改的片段。换句话说,让您的片段实现OnSharedPreferenceChangeListener并在片段onResume上注册此更改,并按照文档说明取消注册onPause

您还需要在片段onResume上加载首选项,以便onPause然后onResume加载首选项的当前状态。

另见https://stackoverflow.com/a/13596569/665823