本次讲解SharedPreferences的封装类 PreferancesActivity。他提供了一些常用的设置项,如问询对话框、编辑框等。

PreferancesActivity的显示效果如下:

刚进入PreferancesActivity:

SharedPreferences使用详解1_Android开发


点击  其他个人信息 :

SharedPreferences使用详解1_SharedPreferences_02


点击姓名:

SharedPreferences使用详解1_Android开发_03


主程序:

public class Main extends PreferenceActivity implements
		OnPreferenceChangeListener
{
	/** Called when the activity is first created. */

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);

		//getPreferenceManager().setSharedPreferencesName("setting");
		//装载布局文件 改变xml的名称
		addPreferencesFromResource(R.xml.preference_setting);
		Preference individualNamePreference = findPreference("individual_name");
		SharedPreferences sharedPreferences= individualNamePreference.getSharedPreferences();
		individualNamePreference.setSummary(sharedPreferences.getString("individual_name", ""));
		//设置姓名是否可用
		if (sharedPreferences.getBoolean("yesno_save_individual_info", false))
			 individualNamePreference.setEnabled(true);
		else
			 individualNamePreference.setEnabled(false);
		individualNamePreference.setOnPreferenceChangeListener(this);
	}

	public boolean onPreferenceChange(Preference preference, Object newValue)
	{
		preference.setSummary(String.valueOf(newValue));		
		return true;
	}

	@Override
	public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
			Preference preference)
	{

		if ("yesno_save_individual_info".equals(preference.getKey()))
		{
			findPreference("individual_name").setEnabled(
					!findPreference("individual_name").isEnabled());
		}
		return super.onPreferenceTreeClick(preferenceScreen, preference);
	}
}
新建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="wireless_network"
			android:title="使用无线网络" android:summary="使用无线网络查看应用程序(例如Google地图)中的位置" />
		<CheckBoxPreference android:key="gps_satellite_setting"
			android:title="启用GPS卫星设置" android:summary="定位时,精确到街道级别(取消选择可节约电量)" />
	</PreferenceCategory>
	<PreferenceCategory android:title="个人信息设置">

		<CheckBoxPreference android:key="yesno_save_individual_info"
			android:title="是否保存个人信息" />
		<EditTextPreference android:key="individual_name"
			android:title="姓名" android:summary="请输入真实姓名" />
		<PreferenceScreen android:key="other_individual_msg"
			android:title="其他个人信息" android:summary="是否工作、手机">
			<CheckBoxPreference android:key="is_an_employee"
				android:title="是否工作" />
			<EditTextPreference android:key="mobile"
				android:title="手机" android:summary="请输入真实的手机号" />
		</PreferenceScreen>
	</PreferenceCategory>
</PreferenceScreen>

ps 1、一个设置界面对应一个<PreferanceScreen>标签

      2、每一个设置标签<CheckBoxPreferance>等都有一个android:key属性与xml中的值对应

      3、如果嵌套使用<PreferanceScreen>则表示该设置页有一个子页面