zoukankan      html  css  js  c++  java
  • 【转】 Pro Android学习笔记(五八):Preferences(2):CheckBoxPreference

    目录(?)[-]

    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开发相关文章

  • 相关阅读:
    [转]使用@Test 也可以从spring容器中获取依赖注入
    idea/ecipse中使用maven集成springmvc相关jar包时候,出错:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    mongodb 权限设置--用户名、密码、端口
    java中import static和import的区别【转】
    python 数字的四舍五入的问题
    数据库——索引(面试、笔试必会)
    Python 中的那些坑总结——持续更新
    python2和python3的区别——持续更新
    常用的排序算法的时间复杂度和空间复杂度
    Libpacp 深度剖析
  • 原文地址:https://www.cnblogs.com/blongfree/p/5048024.html
Copyright © 2011-2022 走看看