我已经实现了自己的PreferenceFragment子类(详细here),并希望在其中监听偏好更改。 PreferenceFragment为您提供了两种方法:
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
和
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
应该使用哪一个?有什么不同?我真的不明白distinction made in the Android docs。
答案 0 :(得分:16)
第一个获取PreferenceManager
的共享偏好设置。第二个来自PreferenceScreen
,从Preference
类继承此方法。
我认为这不是功能差异,因为两者都可能返回SharedPreferences
个对象的相同实例,但我认为使用第一个对象更清楚(使用PreferenceManager
代替{{1} }})。
答案 1 :(得分:13)
PreferenceScreen 请参阅管理here
PreferenceScreen类可以出现在两个地方:
PreferenceManager 请参阅文档here:
差异:
getPreferenceManager ()
返回与片段关联的当前首选项管理器。
getPreferenceScreen ()
返回根PreferenceScreen
,即来自首选项xml文件(preferences.xml)的片段中使用的根首选项屏幕。