java对PreferenceFragment和体系结构的使用
在我的应用程序中,我有一个首选项:“pref1”,可能值为0、1、2。我在SharedPreferences
班的帮助下拿着它们
我想提供一个用户界面来改变它。我用
PreferenceScreen
根创建类SettingFragment extends PreferenceFragment
和xml文件。在xml文件中,我必须设置安卓:key
字段来绑定UI和SharedPreferences
要在用户更改“pref1”后更改我的应用程序行为,我必须实现
OnSharedPreferenceChangeListener
在程序开始时,我还需要得到“pref1”的值, 根据保存的首选项同步程序状态
因此,当我想要添加/删除/修改应用程序的设置单位时,有三个地方需要更改。看起来很糟糕。另一个选项是编写一个class
,其成员变量为SharedPreferences
类型,隐藏所有SharedPreferences
键,并提供简单的set/get方法来获取首选项。但在这种情况下,我必须使用安卓 UI的常规工具:布局
任何使用PreferenceFragment
而不将偏好存储的内部结构(键的名称、默认值及其类型)的知识传播到多个地方的方法也是如此,
还是使用普通布局更好
# 1 楼答案
对于PreferenceFragment中的首选项,不需要有单独的共享首选项键。如果您已将其指定为persistent(Android:persistent=true),Android framework会自动将其保存在共享首选项中。默认情况下,persistent标志为true。 根据文件:
对于您的情况,您可以使用列表首选项
请注意,defaultvalue应该是entryvalues_list_preference元素
如果您必须在首选项值更改时执行某些特定功能 然后,您需要添加首选项更改侦听器
ListPreference preference1=(ListPreference)findPreference(“Prefer1”)
如果您不需要任何带有首选项的自定义操作,那么您只需要在首选项xml文件中添加/删除,不必担心首选项的初始化/更新,因为Android framework将为您处理它