本次讲解SharedPreferences的封装类 PreferancesActivity。他提供了一些常用的设置项,如问询对话框、编辑框等。
PreferancesActivity的显示效果如下:
刚进入PreferancesActivity:
点击 其他个人信息 :
点击姓名:
主程序:
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>则表示该设置页有一个子页面