2024年2月19日发(作者:)

PreferenceActivity的使用总结

Android系统有四种基本的数据保存方法:一是SharedPreference;二是文件;三是SQLite;四是ContentProvider。

PreferenceActivity是android提供的对系统信息和配置进行自动保存的Activity,它通过SharedPreference方式将信息保存在XML文件当中,当然,我们也可以通过SharedPreferences来获取PreferenceActivity设置的值。使用PreferenceActivity不需要我们对SharedPreference进行操作,系统会自动对Activity的各种View上的改变进行保存。

创建一个PreferenceActivity应用的步骤:

1.创建Android项目,并添加一个Android xml文件,类型为Preference,会保存在res/xml路径下。Android为我们提供两种编辑模式,可视化的结构设计及xml源码设计。

preference xml文件中的View是有限的,只有下面几个:

1) CheckBoxPreference:CheckBox选择项,对应的值的ture或flase。

android:key:唯一标识.

android:title:显示标题(大字体显示)

android:summary:副标题(小字体显示)

android:defaultValue:默认值(true或false)

2) EditTextPreference:输入编辑框,值为String类型,会弹出对话框供输入。

android:key:唯一标识.

android:title:显示标题(大字体显示)

3) ListPreference: 列表选择,弹出对话框供选择。下拉框内显示的内容和具体的值需要在res/values/中设置两个array来表示。

android:key:唯一标识.

android:title:显示标题(大字体显示)

android:dialogTitle:弹出对话框的标题

android:entries:列表中显示的值。为一个数组,通过资源文件进行设置。

androide:entryValues:列表中实际保存的值,与entries对应。为一个数组,通过资源文件进行设置。

4) Preference:只进行文本显示,需要与其他进行组合使用。

android:key:唯一标识.

android:title:显示标题(大字体显示)

android:summary:副标题(小字体显示)

android:dependency:附属,即标识此元素附属于某一个元素(通常为CheckBoxPreference),dependency值为所附属元素的key。

5) PreferenceCategory:用于分组。

android:title:显示的标题

android:key:唯一标识符。SharedPreferences也将通过此Key值进行数据保存,也可以通过key值获取保存的信息 (以下相同)。

6)

7)

PreferenceScreen:PreferenceActivity的根元素,设置页面,可嵌套形成二级设置页面,用Title参数设置标题。

RingtonePreference:系统玲声选择。

android:title:设置标题

android:summary:设置说明

android:dialogTitle:设置铃声选择框的标题

2. 创建一个继承自PreferenceActivity类。

public class PreferenceTest extends PreferenceActivity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

//所的的值将会自动保存到SharePreferences

ferencesFromResource(ence);

}

}

3.当PreferenceActivity上View有所更改时,系统会自动将对应的值更新到xml配置文件中,该文件在android的file explorer中的data/data/包名/shared_prefs/路径下。

PreferenceActivity中属性的key是其唯一的识别标识,只有有key的属性才会被保存到/data/data/包名/shared_prefs/包名_文件中

4.为了响应PreferenceActivity的操作,只要重写PreferenceActivity的onPreferenceTreeClick的方法就可以了,通过参数preference来判断是对那一个元素进行的,并根据需要进行操作。

@Override

public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {

return false;

}

5. 获取配置信息

SharedPreferences prefs = aultSharedPreferences(this);

value = ("xxx", "xxx");

当其他地方需要使用配置时,可以直接调用()方法来获取配置信息(preference为xml文件名)。