最近,做一个项目,使用 Preference 非常频繁,之前就很想写一些关于 android 数据存储的文章,这次机会来了。
先从小出着手吧,CheckBoxPreference 小巧可爱,使用简单。但是使用的时候,还是需要注意一些问题。下面开始讨论吧,欢迎拍砖!
app 运行之后,效果(很单调):
项目结构图:
这里关键是在 res/ 目录下面新建 xml 文件夹,然后新建我们需要的 Preference 布局(demo.xml)。
demo.xml 文件:
代码部分,是一个继承自 PreferenceActivity 的类:
在这个类中,实现两个接口,接口方法会在点击该 CheckBoxPreference 时回调。
似乎,上面的内容没有什么很难的地方,的确!但是运行 App 之后,你会发现CheckBox 不可以选择?!
在 API 的文档关于 onPreferenceChange 方法中有这么一句:
可以看出,在这个方法的结尾返回 true 就可以了,呵呵!这点要注意,细节决定效率嘛!
ok,再看第二个问题,我们知道 Preference 可以自动保存状态值,保存是以 xml 文件形式保存的,保存路径在 /data/data/packageName/shared_prefs/×××.xml,但是你到这个路径去找找绝对找不到?!
原因在于我们所写的 demo.xml 文件,在这个文件中,有这么一句:
这就表示不会保存 CheckBoxPreference 这个值(是一个 boolean 值,选择上就是 true,否则就是false)了。
如果,你设置这个属性为 true,android 就会为你自动保存,看下图:
但是为什么会自动保存?为什么文件名称就是 mark.zhang_preference 呢?当然是代码决定的,看源码,就会一目了然了!
当我们点击 CheckBoxPreference 的时候,会触发事件:
那麽,
方法就可以调用,
方法,该方法是 Preference 类的方法,然后调用 PreferenceManager 相关的方法获取 SharedPreference 来保存文件。
最后,看一个小问题,就是如何动态获取 CheckBoxPreerence 的值呢?很简单,实现OnSharedPreferenceChangeListener 接口,看代码:
运行之后,可以看到如下打印信息:
提醒一点,如果不注册onSharedPreferenceChangListener:
是不会回调onSharedPreferenceChanged 方法的。
分享到:
相关推荐
自定义preference的checkboxpreference样式
建立Preference Screen,需要向里面添加首选项控件,原生的这些控件有:CheckBoxPreference、EditTextPreference、ListPreference、MultiSelectListPreference和RingtonePreference,每种控件至少包含4种属性:...
(1)CheckBoxPreference:用来打开或关闭某个功能 (2)ListPreference:用来从多个选项中选择一个值; (3)EditTextPreference:用来配置一段文字信息; (4)Preference:用来执行相关的自定义操作(上图中的清除...
Preference demo good good study day day up
android5.0后,google对checkbox,switch,radio做了动画效果,包括这些类衍生的Preferen控件:SwitchPreferenc,CheckBoxPreference 但这其中并没有RadioPreference控件。假如你需要RadioPreference或者一个带特殊功能...
Preference主要实现一些配置数据,一些我们上次...Preference组件有ListPreference,EditTextPreference,CheckBoxPreference和SwitchPreference,相对于View中的ListView,EditText,CheckBox,Switch和RingtonePreference .
本文实例讲述了Android开发实现浏览器全屏显示功能。分享给大家供大家参考,具体如下: 业务需求:浏览器设置中支持...CheckBoxPreference android:key=full_screen android:defaultValue=false android:title=@stri
此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, RingtonePreference, EditTextPreference以及ListPreference。主要探究了一下android 怎么通过使用preference从而达到对用户定制...
android5.0后,google对checkbox,switch,radio做了动画效果,包括 SwitchPreferenc,CheckBoxPreference 其中并没有RadioPreference控件。假如你需要RadioPreference或者一个带特殊功能的Preferece,当然你会选择了...
主要介绍了Android 中CheckBox的isChecked的使用实例详解的相关资料,需要的朋友可以参考下
19.3.6 将媒体内容添加到媒体存储 19.3.7 为整个SD卡触发MediaScanner 19.3.8 参考资料 19.4 小结 第20章 使用OpenGL进行3D图形编程 20.1 了解OpenGL的历史和背景 20.1.1 OpenGL ES 20.1.2 ...
19.3.6 将媒体内容添加到媒体存储 19.3.7 为整个SD卡触发MediaScanner 19.3.8 参考资料 19.4 小结 第20章 使用OpenGL进行3D图形编程 20.1 了解OpenGL的历史和背景 20.1.1 OpenGL ES 20.1.2 ...
大概思路: 首先我先添加这一个checkboxPreference,然后将是否选择这一功能的值(0和1)存到data/data/com.android.providers.settings /databases/settings.db数据库的system表中 ,然后再根据数据库表中的值在...
这个存储库是关于 PreferenceActivity 中的数字选择器对话框。 正如您所拥有的 EditTextPreference 或 CheckboxPreference 一样,我需要一个带有数字选择器的简单对话框,该对话框可通过 xml 进行配置并自动更新其...