Android保存设置的PreferenceActivity

界面XML文件:preference_setting.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <PreferenceCategory android:title="我的位置源">  
  4.         <CheckBoxPreference  
  5.             android:key="my_wireless_network"  
  6.             android:title="使用无线电"  
  7.             android:summary="使用无线网络查看应用程序(例如Google地图)中的位置"  
  8.         />  
  9.         <CheckBoxPreference  
  10.             android:key="my_gps_satellite_setting"  
  11.             android:title="启用GPS卫星设置"  
  12.             android:summary="定位时,精确到街道级别(取消选择可节约电量)"  
  13.         />  
  14.     </PreferenceCategory>  
  15.       
  16.     <PreferenceCategory android:title="个人信息设置">  
  17.         <CheckBoxPreference  
  18.             android:key="my_yesno_save_individual_info"  
  19.             android:title="是否保存个人信息"  
  20.         />  
  21.         <EditTextPreference  
  22.             android:key="my_individual_name"  
  23.             android:title="姓名"  
  24.             android:summary="请输入真实姓名"  
  25.         />  
  26.         <PreferenceScreen   
  27.             android:key="my_other_individual_msg"  
  28.             android:title="其他个人信息"  
  29.             android:summary="是否工作、手机">  
  30.             <CheckBoxPreference  
  31.                 android:key="my_is_an_employee"  
  32.                 android:title="是否工作"  
  33.             />  
  34.             <EditTextPreference  
  35.                 android:key="my_mobile"  
  36.                 android:title="手机"  
  37.                 android:summary="请输入您的手机号码"  
  38.             />  
  39.         </PreferenceScreen>  
  40.     </PreferenceCategory>  
  41. </PreferenceScreen>  

 

 

PreferenceActivity 的类文件:

  1. package com.icitylife.preference;  
  2.   
  3. import android.content.SharedPreferences;  
  4. import android.os.Bundle;  
  5. import android.preference.Preference;  
  6. import android.preference.PreferenceActivity;  
  7. import android.preference.PreferenceScreen;  
  8. import android.preference.Preference.OnPreferenceChangeListener;  
  9.   
  10. public class Main extends PreferenceActivity implements OnPreferenceChangeListener {  
  11.     /** Called when the activity is first created. */  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         //设置PreferenceActivity保存数据使用的XML文件的名称  
  16.         getPreferenceManager().setSharedPreferencesName("mySetting");  
  17.         //加载XML资源文件:此处就不能使用Activity的setContentView()  
  18.         addPreferencesFromResource(R.xml.preference_setting);  
  19.         //获取【姓名】设置项对应的Preference对象  
  20.         Preference  individualNamePreference=findPreference("my_individual_name");  
  21.         //获得指向mySetting.xml文件的SharedPreference对象  
  22.         SharedPreferences sharedPreferences=individualNamePreference.getSharedPreferences();  
  23.         //设置【姓名】设置项的summary  
  24.         individualNamePreference.setSummary(sharedPreferences.getString("my_individual_name",""));  
  25.         //判断【是否保存个人信息】设置项是否被选中  
  26.         if(sharedPreferences.getBoolean("my_yesno_save_individual_info",false)){  
  27.             individualNamePreference.setEnabled(true);  
  28.         }else{  
  29.             individualNamePreference.setEnabled(false);  
  30.         }  
  31.         individualNamePreference.setOnPreferenceChangeListener(this);  
  32.         //获得【电话号码】设置项对应的Preference对象  
  33.         Preference mobileNamePreference=findPreference("my_mobile");  
  34.         SharedPreferences mobileSharedPreferences=mobileNamePreference.getSharedPreferences();  
  35.         //设置【电话号码】的summary  
  36.         mobileNamePreference.setSummary(mobileSharedPreferences.getString("my_mobile",""));  
  37.         mobileNamePreference.setOnPreferenceChangeListener(this);  
  38.     }  
  39.   
  40.     @Override  
  41.     public boolean onPreferenceChange(Preference preference, Object newValue) {  
  42.         preference.setSummary(String.valueOf(newValue));  
  43.         return true;  
  44.     }  
  45.       
  46.     /** 
  47.      * 处理【是否保存个人信息】的改变事件 
  48.      */  
  49.     @Override  
  50.     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,  
  51.             Preference preference){  
  52.         if("my_yesno_save_individual_info".equals(preference.getKey())){  
  53.             findPreference("my_individual_name").setEnabled(!findPreference("my_individual_name").isEnabled());  
  54.         }  
  55.         return super.onPreferenceTreeClick(preferenceScreen, preference);  
  56.     }  
  57. }  
posted @ 2014-04-20 01:11  brave-sailor  阅读(447)  评论(0编辑  收藏  举报