`

数据存储: CheckBoxPreference

 
阅读更多

最近,做一个项目,使用 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的checkboxpreference样式

    Android学习笔记之Shared Preference

    建立Preference Screen,需要向里面添加首选项控件,原生的这些控件有:CheckBoxPreference、EditTextPreference、ListPreference、MultiSelectListPreference和RingtonePreference,每种控件至少包含4种属性:...

    Android中Fragmen首选项使用自定义的ListPreference的方法

    (1)CheckBoxPreference:用来打开或关闭某个功能 (2)ListPreference:用来从多个选项中选择一个值; (3)EditTextPreference:用来配置一段文字信息; (4)Preference:用来执行相关的自定义操作(上图中的清除...

    Preference demo

    Preference demo good good study day day up

    【android5.0】自定义带动画的RadioPreference

    android5.0后,google对checkbox,switch,radio做了动画效果,包括这些类衍生的Preferen控件:SwitchPreferenc,CheckBoxPreference 但这其中并没有RadioPreference控件。假如你需要RadioPreference或者一个带特殊功能...

    Android Preference组件使用

    Preference主要实现一些配置数据,一些我们上次...Preference组件有ListPreference,EditTextPreference,CheckBoxPreference和SwitchPreference,相对于View中的ListView,EditText,CheckBox,Switch和RingtonePreference .

    Android开发实现浏览器全屏显示功能

    本文实例讲述了Android开发实现浏览器全屏显示功能。分享给大家供大家参考,具体如下: 业务需求:浏览器设置中支持...CheckBoxPreference android:key=full_screen android:defaultValue=false android:title=@stri

    android preference framework demo

    此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, RingtonePreference, EditTextPreference以及ListPreference。主要探究了一下android 怎么通过使用preference从而达到对用户定制...

    android5.0自定义带动画的RadioPreference

    android5.0后,google对checkbox,switch,radio做了动画效果,包括 SwitchPreferenc,CheckBoxPreference 其中并没有RadioPreference控件。假如你需要RadioPreference或者一个带特殊功能的Preferece,当然你会选择了...

    Android 中CheckBox的isChecked的使用实例详解

    主要介绍了Android 中CheckBox的isChecked的使用实例详解的相关资料,需要的朋友可以参考下

    精通ANDROID 3(中文版)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 ...

    精通Android 3 (中文版)2/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 ...

    android 添加按(power键)电源键结束通话(挂断电话)

    大概思路: 首先我先添加这一个checkboxPreference,然后将是否选择这一功能的值(0和1)存到data/data/com.android.providers.settings /databases/settings.db数据库的system表中 ,然后再根据数据库表中的值在...

    NumberPickerPreference

    这个存储库是关于 PreferenceActivity 中的数字选择器对话框。 正如您所拥有的 EditTextPreference 或 CheckboxPreference 一样,我需要一个带有数字选择器的简单对话框,该对话框可通过 xml 进行配置并自动更新其...

Global site tag (gtag.js) - Google Analytics