zoukankan      html  css  js  c++  java
  • (首选项,设置栏)PreferenceActivity 用法

    当我们的app要保存用户设置信息时候,你可能使用Acitivity+SharePreference来存储。但其实Android已经为我们提供了更好的选择,那就是PreferenceActivity。此外PreferenceActivity也可以呗其他第三方应用程序使用。

    关于Preference Activity

    Preference Activity框架由四个部分构成:

    (1)Preference Screen布局 一个XML文件

    (2)Preference Activtiy 和 Preference Fragment(Android3.0后才有的)

    (3)Preference Header

    (4)Shared Preference 变化监听程序 一个onSharedPreferenceChangeListener类的实现。用于监听Shared Preference 的变化

    注意:在android3.0之前是没有Preference Fragment概念的。PreferenceAcitivity直接包含Preference Screen的。但是在Android3.0之后是PreferenceActivity→包含→Preference Fragment →包含→ Preference Screen。在使用PreferenceAcitivity的时候要注意Android系统版本的兼容性问题(3.0 之前和之后)。

    二。创建PreferenceActivity

    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" >
    
        <PreferenceCategory
            android:key="set_net"
            android:title="网络设置" >
            <CheckBoxPreference
                android:key="set_3g"
                android:summary="使用3G虽可提高数据载入速度,但可能会降低电池寿命"
                android:title="启用3G" />
            <CheckBoxPreference
                android:key="set_2g"
                android:summaryOff="打开蜂窝数据"
                android:summaryOn="关闭蜂窝数据"
                android:title="蜂窝数据" />
    
            <Preference
                android:key="set_2g_net"
                android:title="蜂窝数据网络" />
    
            <CheckBoxPreference
                android:key="set_roving"
                android:summary="在境外时请关闭数据漫游"
                android:title="数据漫游" />
        </PreferenceCategory>
        <PreferenceCategory
            android:key="set_VPN_Category"
            android:title="VPN设置" >
            <Preference
                android:key="set_VPN"
                android:title="设置VPN" />
        </PreferenceCategory>
    
    </PreferenceScreen>

    怎么显示呢?只需创建一个Activity继承自PreferenceActivity类即可。

    代码如下:

    package com.test.sharedpreferences;
    
    import android.os.Bundle;
    import android.preference.PreferenceActivity;
    
    public class SharedPreferencesDemoActivity extends PreferenceActivity  {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 所的的值将会自动保存到SharePreferences
         //主意此处使用的是
    addPreferencesFromResource()方法
            addPreferencesFromResource(R.xml.netsetting);
        }
    
    }

    现在我们完成啦。运行一下看看效果把:

    2、PreferenceActivity元素说明

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

     

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

    尽管每个首选项控件可用的特定属性不同,但是至少有以下四个属性是不变的

    android:title,

    android:key,

    android:summary,

    android:defaultValue

    常见属性说明:

    title:显示的标题

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

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

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

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

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

    dialogTitle:弹出对话框的标题

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

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

    三.监听PreferenceActivity的变化

    参考网址(http://liuzhichao.com/p/528.html)

  • 相关阅读:
    济南学习D1T5__HEAP
    快速计算C(n,r)
    快速阶乘算法
    济南学习D2T1__折纸带
    济南学习D3T1__线性筛和阶乘质因数分解
    栈与队列:栈的链式储存结构
    线性表应用:建立一个随机数 链表获得中间结点
    栈与队列应用:二进制转十进制 八进制 十六进制(栈)
    线性表:单链表基本操作代码
    线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)
  • 原文地址:https://www.cnblogs.com/ywtk/p/3795098.html
Copyright © 2011-2022 走看看