listpreference

MyPreferencesActivity.java
package com.example.a;

import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;

/**
 * @description 有关首选项preferences的研究
 * @author chenzheng_java
 * @since 2011/03/29 继承了PreferenceActivity我们可以方便的对preference进行操作。
 *        例如可以通过getPreferenceManager获取首选项管理器
 *        那,我们可不可以不继承PreferenceActivity呢?当然可以,你还记得不记得,实际上Activity类中
 *        就有个SharedPreferences getSharedPreferences(String name, int
 *        mode)方法呢,我们通过它
 *        也可以对preference进行操作。当然了,如果我们不继承PreferenceActivity的话,那么我们就要手动的
 *        对数据进行保存了。而不是跟现在一样,会自动的根据你的选择项进行数据保存。
 *        那么,preference在这里是怎么样进行自动保存的呢,答案很简单
 *        ,那就是在addPreferencesFromResource方法的具体实现中!
 */
public class MyPreferencesActivity extends PreferenceActivity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.mylistpreference);
		/**
		 * getPreferenceManager返回首选项管理器对象
		 */
		PreferenceManager manager = getPreferenceManager();
		// 根据android:key中指定的名称(相当于id)来获取首选项
		ListPreference listPreference = (ListPreference) manager.findPreference("myListPreference");
		Log.i("存储的值为", "" + listPreference.getValue());
	}
}

res/xml/mylistpreference.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
对于该文件需要注意以下几点
第一:位置。该文件的位置是在res/xml/下的。
第二:格式,PreferenceScreen为根标签,ListPreference为子标签
第三:标签属性含义
android:key 唯一标识符,和android:id相类似,PreferenceManager可以以其为参数通过findPreference获取指定的preference
android:title 整个屏幕的标题
android:summary 选项的简单说明
android:entries 弹出的对话框中,列表显示的文本内容,注意哦,这里指定的是一个数组哦
android:entryValues 与android:entries相对应的值
android:defaultValue 当对应值不存在时的默认值
android:dialogTitle 弹出的对话框中的标题信息

-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="screen_list"
    android:summary="说明摘要"
    android:title="标题" >

    <ListPreference
        android:defaultValue="@array/list_entries_value2"
        android:dialogTitle="dialogTitle"
        android:entries="@array/list_entries"
        android:entryValues="@array/list_entries_value"
        android:key="myListPreference"
        android:summary="说明摘要"
        android:title="标题" >
    </ListPreference>

</PreferenceScreen>

values/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="list_entries">
        <item>山东</item>
        <item>福建</item>
        <item>北京</item>
        <item>河北</item>
    </string-array>
    <string-array name="list_entries_value">
        <item>shandong1</item>
        <item>fujian1</item>
        <item>beijing1</item>
        <item>hebei1</item>
    </string-array>
    <string-array name="list_entries_value2">
        <item>shandong2</item>
        <item>fujian2</item>
        <item>beijing2</item>
        <item>hebei2</item>
    </string-array>

</resources>

你可能感兴趣的:(Preference)