目录(?)[-]

  1. CheckBox Preference
    1. xml文件
    2. 设备的存贮文件
  2. 复合preference

在ListPreference的例子中显示的是单选,如果是多选,可采用CheckBoxPreferece。我们继续航班信息的例子,用户选择航班信息中显示哪些信息(航班,出发时间、到达时间、航程时间、价格)。

CheckBox Preference

xml文件

在res/xml/中增加checkbox.xml文件,如下:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="flight_columns_pref" 
    android:title="Flight Search Prefereces" 
    android:summary="Set Columns for Search Results"> 
    <CheckBoxPreference android:key="show_airline_column_pref" 
        android:title="AirLine" 
        android:summaryOn="Show AirLine Column" 
        android:summaryOff="Not Show AirLine Column" /> 
       <CheckBoxPreference   android:key="show_departure_column_pref" 
        android:title="Departure" 
        android:summary="Show Departure column" /> 
    <CheckBoxPreference … /> 
    <CheckBoxPreference … /> 
    <CheckBoxPreference … /> 
</PreferenceScreen>

android:summaryOn和android:summaryOff表示在选择和不选择分别显示的summary。

设备的存贮文件

在设备上存贮preference的内容如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
    <boolean name="show_departure_column_pref" value="true" /> 
    <boolean name="show_airline_column_pref" value="false" />  
    …… 
</map>

从存贮的xml文件中看到,存贮值为boolean,因此在读取preference时采用getBoolean(),如下:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
boolean option = prefs.getBoolean("show_airline_column_pref", false);
showInfo("Show Airline column : " +  option); 
showInfo("Show Departure column : " +  prefs.getBoolean("show_departure_column_pref", false));

复合preference

我们的第一个例子是ListPreference,第二个例子是CheckPreference,我们希望这些配置都合并到同一个xml文件中,如下:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http……" 
    android:title="Complex Preferences"> 
    <ListPreference android:key="selected_flight_sort_option" 
        android:title="Flight Options" 
        android:summary="Set Search Options" 
        android:entries="@array/flight_sort_options" 
        android:entryValues="@array/flight_sort_options_values" 
        android:dialogTitle="Choose Flight Options" 
        android:defaultValue="@string/default_flight_option"/> 
    
        <PreferenceScreen android:key="flight_columns_pref" 
            android:title="Flight Search Prefereces" 
            android:summary="Set Columns for Search Results"> 
            <CheckBoxPreference android:key="show_airline_column_pref" 
                android:title="AirLine" 
                android:summaryOn="Show AirLine Column" 
                android:summaryOff="Not Show AirLine Column" /> 
               <CheckBoxPreference 
                android:key="show_departure_column_pref" 
                android:title="Departure" 
                android:summary="Show Departure column" /> 
            <CheckBoxPreference …/> 
              … 其他 CheckBox Preference内容… 
    </PreferenceScreen>

</PreferenceScreen>

在同一app下,res/xml中可以设置多个preference文件,它们可以含有同一个key的preference,实际都指向存贮文件中的同一个值,即代表相同的preference,只是在不同的Preferences UI中呈现。

本博文涉及的例子代码,可以在Pro Android学习:Preference(首选项)小例子中下载。

相关链接: 我的Android开发相关文章

【转】 Pro Android学习笔记(五八):Preferences(2):CheckBoxPreference的更多相关文章

  1. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  2. 【转】 Pro Android学习笔记(八五):了解Package(4):lib项目

    目录(?)[-] 什么是lib项目 小例子 Lib的实现 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...

  3. 【转】 Pro Android学习笔记(八十):服务(5):访问远程服务

    目录(?)[-] Client的AIDL文件 Client的代码 建立连接 请求服务 断开连接 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://bl ...

  4. 【转】 Pro Android学习笔记(八八):了解Handler(2):什么是Handler

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 之前我们有一篇很好的博文<Andro ...

  5. 【转】 Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子

    目录(?)[-] 小例子 Handler的处理 Activity的代码片段 后台线程和UI的互动 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://b ...

  6. 【转】 Pro Android学习笔记(八六):了解Package(5):使用lib

    目录(?)[-] 在项目中使用lib 源代码 了解一些机制 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowin ...

  7. 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享

    目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...

  8. 【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程

    目录(?)[-] 类比例子 数字签名 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在W ...

  9. 【转】 Pro Android学习笔记(八七):了解Handler(1):组件和线程

    目录(?)[-] 主线程消息队列和线程池 查看线程信息 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingf ...

  10. 【转】Pro Android学习笔记(八):了解Content Provider(下中)

    在之前提供了小例子BookProvider,我们回过头看看如何将通过该Content Provider进行数据的读取. (1)增加 private void addBook(String name , ...

随机推荐

  1. iframe自动全屏

    <iframe src="weixin.php" id="adlistpage" name="adlistpage" framebor ...

  2. Java和js的区别,以及Java和c的区别

    刚开始的时候我们也搞不清这些概念,不过后来就慢慢清晰了,首先和大家谈谈Java和js的区别,最简单的区别就是一个是后端,一个是前端.   java是纯面向对象语言,javascrip其实和Java是完 ...

  3. 洛谷 2216 [HAOI2007]理想的正方形

    题目戳这里 一句话题意 给你一个a×b的矩形,求一个n×n的子矩阵,矩阵里面的最大值和最小值之差最小. Solution 这个题目许多大佬都是单调队列,但是我不是很会,只好用了比较傻逼的方法: 首先我 ...

  4. SQL的优化1

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  5. python学习-4-类的使用

    class Animal: def __init__(self, name): # Constructor of the class self.name = name def talk(self): ...

  6. Lean In - 读书笔记

    以下就是摘录了这本书中的相关内容. 他告诉我,想要“赢得每个人的喜欢”这种想法会阻碍我的发展.他说,当你想要让事情有所改变时,你不可能取悦每个人:而如果你去取悦每个人,你就不会获得充分的进步.扎克伯格 ...

  7. Data Structure Array: Maximum circular subarray sum

    http://www.geeksforgeeks.org/maximum-contiguous-circular-sum/ #include <iostream> #include < ...

  8. CustomizaitonSpec Clone_VM

    克隆虚拟机可以加上CustomizationSpec来自动配置好:IP地址.DNS.Domain等信息 1.可以利用PyVmimo中的vim模块在python中完全自定义CustomizationSp ...

  9. Struts2 遇到的问题汇总

    1.报错如下信息: org.apache.jasper.JasperException: The Struts dispatcher cannot be found. This is usually ...

  10. LINQ 学习路程 -- 查询操作 let into关键字

    IList<Student> studentList = new List<Student>() { , StudentName = } , , StudentName = } ...