界面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="my_wireless_network"
android:title="使用无线电"
android:summary="使用无线网络查看应用程序(例如Google地图)中的位置"
/>
<CheckBoxPreference
android:key="my_gps_satellite_setting"
android:title="启用GPS卫星设置"
android:summary="定位时,精确到街道级别(取消选择可节约电量)"
/>
</PreferenceCategory>
<PreferenceCategory android:title="个人信息设置">
<CheckBoxPreference
android:key="my_yesno_save_individual_info"
android:title="是否保存个人信息"
/>
<EditTextPreference
android:key="my_individual_name"
android:title="姓名"
android:summary="请输入真实姓名"
/>
<PreferenceScreen
android:key="my_other_individual_msg"
android:title="其他个人信息"
android:summary="是否工作、手机">
<CheckBoxPreference
android:key="my_is_an_employee"
android:title="是否工作"
/>
<EditTextPreference
android:key="my_mobile"
android:title="手机"
android:summary="请输入您的手机号码"
/>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
PreferenceActivity的类文件:
package com.icitylife.preference;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.preference.Preference.OnPreferenceChangeListener;
public class Main extends PreferenceActivity implements
OnPreferenceChangeListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置PreferenceActivity保存数据使用的XML文件的名称
getPreferenceManager().setSharedPreferencesName("mySetting");
// 加载XML资源文件:此处就不能使用Activity的setContentView()
addPreferencesFromResource(R.xml.preference_setting);
// 获染姓名】设置项对应的Preference对象
Preference individualNamePreference = findPreference("my_individual_name");
// 获得指向mySetting.xml文件的SharedPreference对象
SharedPreferences sharedPreferences = individualNamePreference
.getSharedPreferences();
// 设置【姓名】设置项的summary
individualNamePreference.setSummary(sharedPreferences.getString(
"my_individual_name", ""));
// 判断【是否保存个人信息】设置项是否被选中
if (sharedPreferences
.getBoolean("my_yesno_save_individual_info", false)) {
individualNamePreference.setEnabled(true);
} else {
individualNamePreference.setEnabled(false);
}
individualNamePreference.setOnPreferenceChangeListener(this);
// 获得【电话号码】设置项对应的Preference对象
Preference mobileNamePreference = findPreference("my_mobile");
SharedPreferences mobileSharedPreferences = mobileNamePreference
.getSharedPreferences();
// 设置【电话号码】的summary
mobileNamePreference.setSummary(mobileSharedPreferences.getString(
"my_mobile", ""));
mobileNamePreference.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(String.valueOf(newValue));
return true;
}
/**
* 处理【是否保存个人信息】的改变事件
*/
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
if ("my_yesno_save_individual_info".equals(preference.getKey())) {
findPreference("my_individual_name").setEnabled(
!findPreference("my_individual_name").isEnabled());
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
}