原文地址:http://liuzhichao.com/p/528.html

当我们的应用需要保存用户设置信息的时候,你可能会想到用之后学习过的Activity+Preference来完成,前者用于界面构建 后者用于保存用户的设置信息。这理论上来讲这是可行的,但是实际操作起来却是一件很繁琐的事情,特别是当设置项较多的时候, 每个设置选项都要建立与其对应的Preference,还要即时保存用户设置的改变。其实Android已经为我们提供了用于设置界面的组件,那就是PreferenceActivity。Android系统本身就大量用到了PreferenceActivity来对系统进行信息配置和管理,比如Android系统中的设置。下面我们模拟Android中的网络设置,运行效果如下:

1、如何创建一个PreferenceActivity?

我们借助Eclipse可以很方便的创建PreferenceActivity,新建一个工程,然后添加一个Android xml文件,这里需要选择的是Preference而不是layout或其他,当我们输入名称后可以在res/xml下找到你新建的xml文件。接着我们可以通过可视化的结构设计或者xml源码设计添加设置项。下面是我们这个例子中的设置项信息:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" ><PreferenceCategoryandroid:key="set_net"android:title="网络设置" ><CheckBoxPreferenceandroid:key="set_3g"android:summary="使用3G虽可提高数据载入速度,但可能会降低电池寿命"android:title="启用3G" /><CheckBoxPreferenceandroid:key="set_2g"android:summaryOff="打开蜂窝数据"android:summaryOn="关闭蜂窝数据"android:title="蜂窝数据" /><Preferenceandroid:key="set_2g_net"android:title="蜂窝数据网络" /><CheckBoxPreferenceandroid:key="set_roving"android:summary="在境外时请关闭数据漫游"android:title="数据漫游" /></PreferenceCategory><PreferenceCategoryandroid:key="set_VPN_Category"android:title="VPN设置" ><Preferenceandroid:key="set_VPN"android:title="设置VPN" /></PreferenceCategory></PreferenceScreen>

那么如果显示呢?然后我们创建一个Activity继承自PreferenceActivity类即可。代码如下:

package com.liuzhichao.sharedpreferences;import android.os.Bundle;
import android.preference.PreferenceActivity;public class SharedPreferencesDemoActivity extends PreferenceActivity  {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 所的的值将会自动保存到SharePreferencesaddPreferencesFromResource(R.xml.netsetting);}}

运行工程,效果即是我们之前的那张效果图。

2、PreferenceActivity元素说明

我们在新建的setting.xml里按Alt+/ 可以看到PreferenceActivity中的元素如下:

  • CheckBoxPreference:CheckBox选择项,对应的值的ture或flase
  • EditTextPreference:输入编辑框,值为String类型,会弹出对话框供输入。
  • ListPreference: 列表选择,弹出对话框供选择。
  • Preference:只进行文本显示,需要与其他进行组合使用。
  • PreferenceCategory:用于分组。
  • PreferenceScreen:PreferenceActivity的根元素
  • RingtonePreference:系统玲声选择。
  • PrefeneceActivity都提供了哪几种元素可供使用

常见属性说明:

title:显示的标题

key:唯一标识(至少在同一程序中是唯一),SharedPreferences也将通过此Key值进行数据保存,也可以通过key值获取保存的信息

summary:副标题、说明(小字体显示)

defaultValue:默认值(当然,此处只能是true或false了)

android:summaryOn:属性开启的时候的说明

android:summaryOff:属性关闭时候的说明

dialogTitle:弹出对话框的标题

entries:列表中显示的值。为一个数组,通读通过资源文件进行设置。

entryValues:列表中实际保存的值,也entries对应。为一个数组,通读通过资源文件进行设置。

PreferenceActivity使用简介相关推荐

  1. Android经典的大牛博客推荐

    Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 – 博客园 gundumw100博客 – android进阶分类文章列表 – ITeye技术网站 CSDN ...

  2. 我的Android进阶之旅------经典的大客推荐(排名不分先后)!!

    今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下(转载于:http://blog.csdn.net/wujxiaoz/article/details/8237096) Android中文Wiki ...

  3. 我的Android进阶之旅:经典的大牛博客推荐

    Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN ...

  4. Android进阶之旅:经典的大牛博客推荐

    Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN ...

  5. 收藏了很多大牛的博客

    今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下(转载于:http://blog.csdn.net/wellto/article/details/12838675) Android中文Wiki ...

  6. 大牛的博客,跟大牛学习

    今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下(转载于:http://blog.csdn.net/wujxiaoz/article/details/8237096) Android中文Wiki ...

  7. xUtils简介及其使用方法

    xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响. ...

  8. android Setting模块简介

    Setting模块简介 一.Settings涉及的模块 4.0设置的layout有很大的改变.将设置分为四个部分: WIRELESS & NETWORKS:SIM卡管理,流量使用情况,飞行模式 ...

  9. Android Framework 简介

    Android Framework 简介 简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有详记,结果被很多公司技术人员鄙视了,为了减少自己的短板,重新复习了一遍C++.java.Androi ...

  10. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

最新文章

  1. Ubuntu系统安装stardict(星际译王)词典
  2. 看了这篇C++笔记,你出去行走江湖我就放心了【C++】
  3. JavaScript强化教程——jQuery选择器
  4. Angular 2 Decorators - 1
  5. Hibernate包及相关工具包下载地址
  6. TreeCtrl 查找功能的最简单实现
  7. Linux——VIM多选缩进及高级命令
  8. A - 敌兵布阵(线段树)(单点更新区间求和)
  9. Android-Studio 缓存文件夹配置
  10. iOS应用支持IPV6,就那点事儿
  11. 快速创建ppt中的动画效果图。
  12. 用环状天线测向电压表鉴相器电路定位的无线电测向仪
  13. Swift --- 下标(subscript)
  14. Mysql基础篇(5)—— 约束
  15. 【数据结构】最大曼哈顿距离
  16. 20172327 2017-2018-2 《程序设计与数据结构》第十一周学习总结
  17. Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群
  18. 修复硬盘坏道故障及其后期处理方法
  19. Brackets sequence UVA - 1626(区间DP)
  20. 完美的正方形分割(二)

热门文章

  1. 瑞昱网通芯片RTL8305NB-CG应用介绍
  2. 计算机基础854哈工大,854计算机基础大纲
  3. mnist数据集python导入_Python读取MNIST数据集
  4. matlab安装及破解
  5. Ubuntu14.04+CUDA6.5+OpenCV2.4+Caffee配置
  6. GBASE数据库安装手册中的一点命令
  7. 羡慕写字漂亮的人,怎么样练字?
  8. vue项目前端页面模板,基于vue的前端模板
  9. javaMail学习(一)——易邮邮件服务器的使用
  10. 2个网卡配置相同ip 华为交换机_华为交换机如何配置管理IP地址、如何修改管理IP地址...