界面XML文件:preference_setting.xml

[java] view plaincopyprint?
  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. <PreferenceCategory android:title="个人信息设置">
  16. <CheckBoxPreference
  17. android:key="my_yesno_save_individual_info"
  18. android:title="是否保存个人信息"
  19. />
  20. <EditTextPreference
  21. android:key="my_individual_name"
  22. android:title="姓名"
  23. android:summary="请输入真实姓名"
  24. />
  25. <PreferenceScreen
  26. android:key="my_other_individual_msg"
  27. android:title="其他个人信息"
  28. android:summary="是否工作、手机">
  29. <CheckBoxPreference
  30. android:key="my_is_an_employee"
  31. android:title="是否工作"
  32. />
  33. <EditTextPreference
  34. android:key="my_mobile"
  35. android:title="手机"
  36. android:summary="请输入您的手机号码"
  37. />
  38. </PreferenceScreen>
  39. </PreferenceCategory>
  40. </PreferenceScreen>

<?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 的类文件:

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

Android保存设置的PreferenceActivity相关推荐

  1. Android中Preference,preferenceActivity,PreferenceFragment等的使用

    本文转自android 官方翻译过来的文本: 这里的话,只谈几个需要注意的问题: (1)这篇文章中也谈到的: 您必须将 XML 文件保存在 res/xml/ 目录中.尽管您可以随意命名该文件,但它通常 ...

  2. android学习日记——PreferenceActivity详解

    PreferenceActivity详解 何为PreferenceActivity 以下为官方解释: This is the base class for anactivity to show a h ...

  3. android preference 启动activity,Android PreferenceActivity 学习笔记

    在Ap中有时需要设置一些配置参数,这些参数通过配置文件保存. 为了设置这些参数,需要提供一个UI,针对这种需求,Android提供了preferenceActivity. PreferenceActi ...

  4. Android框架攻击之Fragment注入

    为了适应越来越大的设备屏幕,Android在3.X后引入了Fragment概念,作用是可以在一个屏幕上同时显示多个Activity,以达到充分利用屏幕的目的.关于Fragment的使用说明,可以阅读& ...

  5. [免费专栏] Android安全之Android Fragment注入

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  6. Fragment Injection漏洞杂谈

    路人甲 · 2015/08/21 10:23 0x00 背景 13年的时候,IBM的安全研究人员发现了1个Google框架层的漏洞Fragment注入漏洞,该漏洞可以导致Android手机的PIN码被 ...

  7. Android实战技巧之六:PreferenceActivity使用详解

    一.写作前面 当我们做应用的时候,需要用户配置一些信息,而这就是通常所说的应用设置. 对于Android系统来说,系统本身的设置带来的用户体验和习惯已经深入人心,在我们的应用中同样用到类似的设置页, ...

  8. android 切换 preferencefragment,Android PreferenceActivity与PreferenceFragment详解及简单实例_Android_脚本之家...

    Android  PreferenceActivity与PreferenceFragment 前言 转来转去又回到了Android,闲话少说,这里是参考Android原生的Settings应用来介绍一 ...

  9. Android开发--详解SharedPreference/PreferenceActivity

    我们经常看到应用程序的设置页面,一般用到设置页面时,我们会继承自PreferenceActivity,它实现了SharedPreference,并生成相应的XML文件自动保存用户的设置,在设置页面中, ...

最新文章

  1. java script 月日年转年月日_js的如何进行日期格式转换成年月日
  2. LeetCode Implement strStr(kmp或者BM)
  3. leetcode算法题--下降路径最小和
  4. socket未读消息 如何设计_如何设计IM系统的消息架构?
  5. 计算机地址永无符号数表示,计算机如何区分 有符号 无符号数的区别???
  6. iOS Airplay Screen Mirroring 同屏技术详解
  7. [Java 基础]接口
  8. 计算机教师教学心得体会,信息技术教师教学的一点体会
  9. HTML颜色代码表/颜色名(网摘)
  10. python3 一年中的天数 时间转化为北京时_Python3?环境搭建
  11. java 固定值_这些频繁调用函数是否可以在dblquad中返回固定值?
  12. Android NDK开发:打包so库及jar包供他人使用
  13. axios 请求接口获取文件流数据导出数据到excel,解决乱码
  14. 用74l138实现一个一位全减器_用react实现一个仿ionic button组件
  15. vmware workstation 12 永久激活码
  16. cmd修改计算机睡眠、休眠时间,批量命令
  17. 云运维拓扑图_云运维的核心是什么?
  18. 键盘上F1~F12各个功能键的作用
  19. 使用网络唤醒功能实现远程开机 —— 定时执行专家
  20. 怎么退出自适应巡航_自适应巡航功能是何方神圣?“全速域自适应巡航”又有什么作用呢...

热门文章

  1. React-router总结
  2. 最好用的koa2+mysql的RESTful API脚手架,mvc架构,支持node调试,pm2部署。
  3. Java生鲜电商平台-缓存架构实战
  4. channels2.X 学习笔记
  5. 本地存储cookie和localStorage区别特点
  6. 微信开放平台全网发布时,检测失败 —— C#
  7. 要的需求 ip提取网站源码带采集 要求是PHP源码
  8. WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[中篇]
  9. TCP/IP(四):TCP 与 UDP 协议简介
  10. element组件库中table自定义分页效果