PreferenceActivity

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">
        <ListPreference
            android: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">
        <EditTextPreference
            android:defaultValue="edit default value"
            android:key="edittext_key"
            android:summary="edit summary"
            android:title="edit title"/>
        <CheckBoxPreference
            android:defaultValue="checkbox default value"
            android:key="checkbox_key"
            android:summary="checkbox summary"
            android:title="checkbox title"
            />
        <EditTextPreference
            android: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架构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值