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;
    }
});
posted on 2013-01-06 08:41  @与非  阅读(3328)  评论(0编辑  收藏  举报