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"><ListPreferenceandroid: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"><EditTextPreferenceandroid:defaultValue="edit default value"android:key="edittext_key"android:summary="edit summary"android:title="edit title"/><CheckBoxPreferenceandroid:defaultValue="checkbox default value"android:key="checkbox_key"android:summary="checkbox summary"android:title="checkbox title"/><EditTextPreferenceandroid: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架構。
總結
以上是生活随笔為你收集整理的PreferenceActivity的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java课程设计/大作业合集
- 下一篇: 一些安全扫描工具