PreferenceActivity

PreferenceActivity 是从api1 就加入的。android3.0之后有了fragment的概念后,也加入了PreferenceFragment。

Android提供preference这个键值对的方式 来处理这种情况,自动保存这些数据,并立时生效。Android提供一种类似layout的方式来进行Prefernce的布局。
当我们退出actitvity后再次进入,上次的选项依然保留。我们可以利用preference这一特性,而无须人工对数据进行保存和读取,很是方便。

preferce xml

preference xml 的位置在res/xml目录下

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><!-- <PreferenceCategory android:title="First Category"><ListPreferenceandroid:defaultValue="list key default value"android:dialogTitle="list_dialog_title"android:entries="@array/list_preference"android:entryValues="@array/list_preference"android:key="list_key"android:summary="list_summary"android:title="list title"/></PreferenceCategory>
--><PreferenceCategory android:title="Second Category"><EditTextPreferenceandroid:defaultValue="edit default value"android:key="edittext_key"android:summary="edit summary"android:title="edit title"/><CheckBoxPreferenceandroid:defaultValue="checkbox default value"android:key="checkbox_key"android:summary="checkbox summary"android:title="checkbox title"/><EditTextPreferenceandroid:defaultValue="0"android:key="num_key"android:numeric="integer"android:summary="edit summary"android:title="input number"/></PreferenceCategory>
</PreferenceScreen>

调用

addPreferencesFromResource(R.xml.testpreference); // 可以将xml解析成layout

读取数据

想要 获取preference的数据,首先要获取preferences,然后通过 键值对的获取方式根据key获取数值,在xml中checkbox的key为“checkbox”,值的类型为布尔值,而rintong的值为String

SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this) ;

获取preferences的三种方式

一、getPreferences():可以获取同一activity中的preference;
二、getSharedPreferences():可以获取映用级别的preferences(),在这个例子中由于我们封装在同一app中,也可以使用SharePreferences prefs = getSharedPreferences( “com.wei.android.learning_preferences” ,0);其中第一个参数name的格式是<package_name>_preferences;
三、getDefaultSharedPreferences():就是我们例子的方式,通过Android的偏好管理器来获取其所管理的preferences

click触发规则

1 先调用onPreferenceClick()方法,如果该方法返回true,则不再调用onPreferenceTreeClick方法 ;
如果onPreferenceClick方法返回false,则继续调用onPreferenceTreeClick方法。
2 onPreferenceChange的方法独立与其他两种方法的运行。也就是说,它总是会运行。

补充:点击某个Preference控件后,会先回调onPreferenceChange()方法,即是否保存值,然后再回调onPreferenceClick以及onPreferenceTreeClick()方法,因此在onPreferenceClick/onPreferenceTreeClick

方法中我们得到的控件值就是最新的Preference控件值

PreferenceCategory也可以嵌套PreferenceScreen,PreferenceScreen中的内容,将通过另一屏来显示,我们在上面例子后面添加一个嵌套了PreferenceScreen的PreferenceCategory。整个PreferenceScreen作为一个组件出现,点击后新的一屏,进入PreferenceScreen定义。通过这个关系,我们可以组织自己的preference架构。

PreferenceActivity相关推荐

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

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

  2. PreferenceActivity是什么?

    我们看到Android系统本身就大量用到了PreferenceActivity来对系统进行信息配置和管理,那么它是怎么保存数据的呢,如何创建PrefenceActivity的呢? 创建Android项 ...

  3. 关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

    android的Setting往往用PreferenceActivity来写的 我们在建立layout文件: <PreferenceScreen xmlns:android="http ...

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

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

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

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

  6. Android’s PreferenceActivity for all API versions

    官方文档 I have spent the last few days learning about how to use the new Android PreferenceFragment whi ...

  7. android PreferenceActivity详解

    原帖地址:http://gundumw100.iteye.com/blog/904097 为了引入这个概率 首先从需求说起 即:现有某Activity专门用于手机属性设置 那么应该如何做呢? 根据已学 ...

  8. Android的配置界面PreferenceActivity

    我想大家对于android的系统配置界面应该不会陌生吧,即便陌生,那么下面的界面应该似曾相识吧,假若还是不认识,那么也没有关系,我们这一节主要就是介绍并讲解android 中系统配置界面的使用,相信大 ...

  9. 为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的)

    Android Studio为开发者提供了很多内建的Activity, 其中Settings Activity是非常有用且功能强大的一种内建Activity. Setting Activity其实本质 ...

  10. Android保存设置的PreferenceActivity

    界面XML文件:preference_setting.xml [java] view plaincopyprint? <?xml version="1.0" encoding ...

最新文章

  1. MVC系列——一个异常消息传递引发的思考
  2. 窗口分析函数_2_生成同值重复排名序号
  3. 判断选择语句switch...case
  4. adminlte支持html5吗,spring boot:用adminlte做前端
  5. 如何去设计前端框架能力?星巴克消息开放项目从0到1,从点到面的思考
  6. android开发我的新浪微博客户端-登录页面UI篇(4.1)
  7. Android笔记 显式意图demo
  8. C++ 判断字符串是否全是数字
  9. 判断当前是什么版本浏览器
  10. Mysql深入浅出学习
  11. vue当前浏览器是否为ie_vue判断当前浏览器为IE低版本,给出升级提示;IE11及其他浏览器正常使用...
  12. 嵌入式--需要懂的网站
  13. OSChina 周六乱弹 ——劳动节仍然在劳动,情人节却没有情人。
  14. 浪潮ps9.0 oracle,浪潮ERP-PS V9.1安装手册.doc
  15. 微信小程序实现页面强制刷新
  16. cadence SPB17.4 - allegro - 尺寸标注
  17. python获取指定扩展名的文件_python查找目录下指定扩展名的文件实例
  18. APP版本更新(兼容6.0,7.0系统)
  19. SBSE—基于搜索的软件工程简介
  20. linux系统ttl端口,利用TTL值来鉴别操作系统

热门文章

  1. 用Vim查看和编辑二进制文件
  2. 大学生签到系统理论模型2.0
  3. 专业音响常用测试软件,音响师怎么测试音响?离不开这几款音频处理软件!
  4. SMTP邮件服务器要求安全连接或客户端未通过身份验证的各个解决方案
  5. 前端之HTML视频、音频
  6. 机器人基础之雅克比矩阵
  7. 导线怎么用计算机平差,导线平差计算软件
  8. 微信公众号扫码登录(一)—— 获取微信公众号二维码
  9. 票据通的支票管理的账户管理的对应账号支票已使用该怎么重新修改票据打印模板;
  10. sprintf_s函数用法