最新消息:

PreferenceFragment和ListPreference的使用教程

android 大步 3043浏览 0评论

在app中,必然存在app的设置页面,android为我们提供了PreferenceFragment类来轻松实现设置界面的布局。

原理:

其实原理也简单,就是将PreferenceFragment中的控件与app默认的SharePreference中的key-value(键值对)来进行绑定。当你选中控件,修改了某些值之后,值会被存储到默认的SharePreference中,以此来保存你对app的设置。
本文介绍PreferenceFragment和ListPreference的使用方法。
先上效果图:
设置界面:
点击ListPreference效果:
下面说下详细步骤:
先在android studio中创建一个叫preferencescreen   的项目:

1. 创建MainActivity.java及其布局:

MainActivity.java代码为(这里使用动态的方法定义Fragment):

 

 
 
其中MainActivity.java布局文件为:
    activity_main.xml :

 

2.接着在创建res/xml/basic_preferences.xml:

(我这里还演示了CheckBoxPreference和EditTextPreference的用法)

 

解释:
PreferenceCategory :表示设置界面的一些分类。
android:title  :设置显示的分类的名字

android:title 属性:

设置选项的显示的名字

android:summary属性:

设置选项的详细介绍。

android:key属性:

EditTextPreference、ListPreference和SwitchPreference等等控件,都必有一个属性android:key。因为是使用Share Preference的方式来存储值的,必然是要指定key,以此将控件与key绑定。
 
 
ListPreference的意思很明了,就是弹出一个ListView让用户选择,但是这个ListView只能是单选的。
其中,介绍下不可少的三个属性:
android:key="list_choice" :表示选中列表中的项之后,用叫"list_choice" 的key来存储所选的值。
android:entries  :表示显示列表的时候,列表每一行显示的名字
android:entryValues :表示每一行名字所对应的值,当选中某一行后,则就相当于选中了这个名字所对应的值。比如,我选择了列表中的one ,则"list_choice" 的值就是 “A”.
这里,我们将这两个属性的字符数组都放到xml文件中(当然也可以使用java代码的方式添加)。
在 res/values/arrays.xml:

 

这样,当我们选中one的时候,就相当于选择了值为A,如下图:

3.创建一个叫PrefFragment

创建一个叫PrefFragment,继承自PreferenceFragment (注意,PreFragment不需要重载onCreateView方法),并且使用 addPreferencesFromResource(int ResouceId)的方式,将上面设置的布局添加到PrefFragment:
PrefFragment.java:


 

4. 执行代码,到手机或者模拟器上查看效果。

在app中,我们选中某些控件进行设置后,所选中的值将会议key-value的方式存在app默认的share Preference中,如下图,我们可以在手机上装root explorer,然后去 /data/data/ 目录中,找到自己的app目录,然后里面就会有 shared_prefs/ 目录,打开其中的xml文件,可以看到保存的值:
点击下载demo源码
来自为知笔记(Wiz)

 

转载请注明:大步's Blog » PreferenceFragment和ListPreference的使用教程

SiteMap