PreferenceActivity 是一个抽象类,继承自ListActivity ,该类封装了SharedPreferences
PreferenceActivity 提供了一些常用的设置项如<CheckBoxPreference>,与普通组件一样,这些配置项既可以从XML文件创建,也可以从代码创建.
每一个设置项标签有一个android:key属性,该属性的值就是保存在XML文件中的key-value对中的key
在本示例将使用XML文件的方式创建设置界面,在res目录下建立一个xml目录,并在该目录中建立一个preference_setting.xml文件,该文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="我的位置源">
<CheckBoxPreference android:key="wireless_network"
android:title="使用无线网络" android:summary="使用无线网络查看应用程序(例如Google地图)中的位置" />
<CheckBoxPreference android:key="gps_satellite_setting"
android:title="启用GPS卫星设置" android:summary="定位时,精确到街道级别(取消选择可节约电量)" />
</PreferenceCategory>
<PreferenceCategory android:title="个人信息设置">
<CheckBoxPreference android:key="yesno_save_individual_info" android:title="是否保存个人信息" />
<EditTextPreference android:key="individual_name" android:title="姓名" android:summary="请输入真实姓名" />
<PreferenceScreen android:key="other_individual_msg" android:title="其他个人信息" android:summary="是否工作、手机">
<CheckBoxPreference android:key="is_an_employee" android:title="是否工作" />
<RingtonePreference android:key="ringtone" android:title="点击选择铃声" />
<EditTextPreference android:key="mobile" android:title="手机" android:summary="请输入真实的手机号" />
</PreferenceScreen>
</PreferenceCategory></PreferenceScreen>
示意图 见
下面再介绍几点
1. PreferenceActivity 类有一个addPreferencesFromResource() 方法,它用于将xml 资源显示到界面, 这里指的xml 就是 preference_setting.xml 写法
对于PreferenceScreen 其中3个属性:key、title、summary, key类似于android:id, title 是屏幕的标题, summary 是屏幕用途的描述.
2. 在PreferenceScreen 下可以存在 CheckBoxPreference、ListPreference 等首选项的子类,它们继承于android.preference.Preference 父类
如图所示
以 ListPrefernce 为例,说明一些特性
________________________________________________________________
特 性 说 明
________________________________________________________________
android:key 选项的名称或键
android:title 选项的标题
android:summary 选项的简短摘要
android:entries 列表项的文本
android:entryValues 列表项的值,上一个 文本相当于键
android:dialogTitle 对话框的标题, 在视图显示为对话框时使用
android:defaultValue 列表项中选项的默认值
________________________________________________________________
本示例程序具有普遍意义,可以重点关注下。
本示例具体代码请参见 ch06_preferences工程