Android设置Settings实现:PreferenceActivity【1】

Android的设置Settings功能比较常见,通常可以考虑使用PreferenceActivity实现。

PreferenceActivity需要从res/xml加载(addPreferencesFromResource)一个定义好的Preference的xml文件。比如preferences.xml:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android">
  3. <PreferenceCategoryandroid:title="【第1组】">
  4. <ListPreference
  5. android:dialogTitle="listdialogtitle"
  6. android:entries="@array/citys"
  7. android:entryValues="@array/citys"
  8. android:key="list_key"
  9. android:summary="listsummary"
  10. android:title="listtitle"/>
  11. </PreferenceCategory>
  12. <PreferenceCategoryandroid:title="【第2组】">
  13. <EditTextPreference
  14. android:defaultValue="缺省值1"
  15. android:key="edit_text_key_1"
  16. android:summary="editsummary"
  17. android:title="edittext1"/>
  18. <CheckBoxPreference
  19. android:defaultValue="true"
  20. android:key="checkbox_key"
  21. android:summary="checkboxsummary"
  22. android:title="checkboxtitle"/>
  23. </PreferenceCategory>
  24. <!--点击将浏览和打开网页-->
  25. <Preference
  26. android:summary="http://blog.csdn.net/zhangphil"
  27. android:title="浏览网页">
  28. <intent
  29. android:action="android.intent.action.VIEW"
  30. android:data="http://blog.csdn.net/zhangphil"/>
  31. </Preference>
  32. <!--此处将跳转到下一屏设置-->
  33. <PreferenceScreen
  34. android:key="preference_screen_2_key"
  35. android:persistent="false"
  36. android:title="PreferenceScreen2">
  37. <EditTextPreference
  38. android:defaultValue="缺省值2"
  39. android:key="edit_text_key_2"
  40. android:summary="editsummary"
  41. android:title="edittext2"/>
  42. </PreferenceScreen>
  43. </PreferenceScreen>

其中需要的数组资源citys在res/values中的arrays.xml中定义好:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <string-arrayname="citys">
  4. <item>成都</item>
  5. <item>北京</item>
  6. <item>上海</item>
  7. </string-array>
  8. </resources>

上层Java代码:

[java] view plain copy
  1. packagezhangphil.settings;
  2. importandroid.content.SharedPreferences;
  3. importandroid.content.SharedPreferences.OnSharedPreferenceChangeListener;
  4. importandroid.os.Bundle;
  5. importandroid.preference.PreferenceActivity;
  6. importandroid.preference.PreferenceManager;
  7. importandroid.util.Log;
  8. importandroid.widget.Toast;
  9. publicclassMainActivityextendsPreferenceActivity{
  10. privateMyOnSharedPreferenceChangeListenermOnSharedPreferenceChangeListener=newMyOnSharedPreferenceChangeListener();
  11. @Override
  12. protectedvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. //通用的读取设置的某个值的方法
  15. SharedPreferencessharedPreferences=PreferenceManager.getDefaultSharedPreferences(this);
  16. Strings=sharedPreferences.getString("edit_text_key_2","暂时为空");
  17. Log.d("edit_text_key_2",s);
  18. //添加设置的选项
  19. addPreferencesFromResource(R.xml.preferences);
  20. //注册添加设置的项数据发生变化时候的监听
  21. sharedPreferences.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
  22. }
  23. @Override
  24. protectedvoidonResume(){
  25. super.onResume();
  26. getPreferenceScreen().getSharedPreferences()
  27. .registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
  28. }
  29. @Override
  30. protectedvoidonPause(){
  31. super.onPause();
  32. getPreferenceScreen().getSharedPreferences()
  33. .unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
  34. }
  35. privateclassMyOnSharedPreferenceChangeListenerimplementsOnSharedPreferenceChangeListener{
  36. @Override
  37. publicvoidonSharedPreferenceChanged(SharedPreferencessharedPreferences,Stringkey){
  38. Toast.makeText(getApplication(),key,Toast.LENGTH_SHORT).show();
  39. }
  40. }
  41. }



更多相关文章

  1. android 开发问题集,android问题总结,android错误解决收集
  2. Android(安卓)Notification 通知
  3. Android修炼之道——Shape
  4. Android(安卓)Studio 初体验
  5. Android如何在java代码中设置margin
  6. Android(安卓)Studio中设置ButterKnife、android butterknife ze
  7. android WebView全屏观看视频 全屏观看直播
  8. android 自定义attr 详解
  9. Android(安卓)自带的一些可用于Activity的Theme

随机推荐

  1. Android(安卓)- proguard混淆器出错
  2. Android Handler机制详解:在线程中新建Han
  3. android中刷新Invalidate和postInvalidat
  4. 《第一行代码:Android(第2版)》,作者郭霖
  5. 解决eclipse里android无法关联源码办法
  6. Android屏幕完美适配最全攻略(最权威的官
  7. Android成功刷到beagle board ^_^
  8. 【Cocos2d-x】Cocos2d-x跨Android平台搭
  9. Android AsyncTask完全解析
  10. android TextView XML的一些属性