PreferenceActivity,PreferenceScreen
PreferenceActivity的使用
step1.写一个类继承PreferenceActivity重写onCreate方法
step2.在res下新建一个文件夹,命名为:xml
step3.在xml文件夹下新建一个文件preference.xml(具体内容如下)
step4.在PreferenceActivity的onCreate方法中addPreferencesFromResource(R.xml.preference);
step5.运行程序,并填入数据时,会自动保存到 <包名>_preferences.xml 文件中
step6.其他Activity可以通过PreferenceManager.getDefaultSharedPreference(Context)来获取SharedPreference对象。然后从xml中取设置的值。
preference.xml内容如下:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="first prefenencescreen" android:summary="first prefenencescreen" > <EditTextPreference android:key="username" android:title="用户名" android:summary="填入正确用户名" /> <CheckBoxPreference android:key="light" android:title="网络开关" android:summaryOn="打开" android:summaryOff="关闭" /> <ListPreference android:key="cache" android:entries="@array/set_cache_size_entries" android:entryValues="@array/set_cache_size_entry_values" android:dialogTitle="设置缓存" android:title="设置缓存" /> <PreferenceCategory android:title="其他设置" > <MultiSelectListPreference android:title="对选的title" android:key="books" android:entries="@array/set_cache_size_entries" android:entryValues="@array/set_cache_size_entry_values" /> <SwitchPreference android:summaryOn="sumOn" android:summaryOff="sumOff" android:switchTextOn="textOn" android:switchTextOff="textOff" android:key="switchonoff" android:title="switch" /> </PreferenceCategory> </PreferenceScreen>
说明:
android:key 保存到xml中的键,我们填写的内容将作为值
android:title 标题
android:summary 描述,字体偏小,在title下显示
android:entries 显示的列表
android:entriesValues 显示的列表所对应的值,这些值才是真正存到xml中的。
android:inputType="textPassword" EditTextPreference密码效果
PreferenceCategory定义一个组
可以内嵌一个intent
<PreferenceScreen android:title="内嵌Intent"> <intent android:targetPackage="com.anjoyo.preactivitiy" android:targetClass="com.anjoyo.preactivitiy.Day0105_preferenceactivityActivity" ></intent> </PreferenceScreen>
targetPackage为intent启动程序的包名
targetClass为类的包名和类名
可以添加监听:
addPreferencesFromResource(R.xml.settingpreference); PreferenceScreen ps = getPreferenceScreen(); final Preference p = ps.findPreference("username"); EditTextPreference etp = (EditTextPreference) p; //取得键值对 对应的值 String value = etp.getText(); etp.setSummary(value); etp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { p.setSummary(newValue.toString()); //return true才会把新值保存起来 return true; } });