日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android学习笔记四十Preference使用

發布時間:2024/1/17 Android 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android学习笔记四十Preference使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Preference直譯為偏好,博友建議翻譯為首選項。一些配置數據,一些我們上次點擊選擇的內容,我們希望在下次應用調起的時候依舊有效,無須用戶再一次進行配置或選擇。Android提供preference這個鍵值對的方式來處理這樣的情況,自己主動保存這些數據,并立時生效,同一時候Android提供一種類似的layout的方式來進行Prefernce的布局。

一個簡單的Preferenece樣例

步驟1:編寫preference XML,在res/xml/下增加我們的preference XML文件,比如名字叫c21preference.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- preference的組織方式有PreferenceScreen和PreferenceCategory,PreferenceCategory是帶層次組織關系,在后面的樣例體驗,而PreferenceScreen就是最平白和基礎的方式 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
???
<!-- 有四個基本組建,這個樣例學習兩個。里面的內容對比圖,非常easy理解,RingtonePreference是選擇鈴音,這里給出兩個選擇,系統默認的鈴音和無聲 -->
??? <CheckBoxPreference android:key="
checkbox"
?? ??? ?android:title="
CheckBox Preference"
?? ??? ?android:summary="
Check it on , check it off"/>
??? <RingtonePreference android:key="
ringtone"
?? ??? ?android:title="
Ringtone Preference"
?? ??? ?android:showDefault="
true"
?? ??? ?android:showSilent="
true"
?? ??? ?android:summary="
Pick a tone, any tone"/>
</PreferenceScreen>

步驟2:在java源碼中調用該xml,生成對應的preference界面

public class Chapter21Test1 extendsPreferenceActivity{
??
?@Override
?? ?protected void onCreate(Bundle savedInstanceState) {
?? ????
super.onCreate(savedInstanceState);
?? ??? ?addPreferencesFromResource(R.xml.c21preference);
?? ?}
}

和用layout方式一樣,代碼非常easy。和以往界面最大的差別是,我們對checkbox進行選擇或者對ringtone進行選擇后,這個選擇結果是被保留的,當我們退出actitvity后再次進入,上次的選項依舊保留,我們又一次向模擬器load應用,發現之前的選項仍然存在。我們能夠利用preference,而無須人工對數據進行保存和讀取,非常是方便。

步驟3:獲取preference的數據

處了在preference的界面中可以保留數據,我們也希望可以讀出數據,以便這些數據可以用在其它的activity中。假設還有一個activity和這些數據關聯,并且希望可以實時進行同步,在onResume()中對preference保留的數據進行讀取,而后進行相關的更新。

首先要獲取preferences,然后通過鍵值對的獲取方式依據key獲取數值,在xml中checkbox的key為“checkbox”,值的類型為布爾值,而rintong的值為String,比如:

??? protected void onResume() { //在還有一個Activity中
?? ????
super.onResume();
?? ??? ?SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this) ;
?? ??? ?System.out.println(new Boolean(prefs.getBoolean("
checkbox",false)).toString());//false表示沒有查到checkbox這個key的返回值
?? ??? ?System.out.println(prefs.getString("
ringtone","<unset>"));//<unset>表示沒有查到ringtong這個key的返回值
?? ?}

獲取preferences能夠通過三種方式:
一、getPreferences():能夠獲取同一activity中的preference;
二、getSharedPreferences():能夠獲取映用級別的preferences(),在這個樣例中因為我們封裝在同一app中,也能夠使用SharePreferences prefs = getSharedPreferences( "com.wei.android.learning_preferences" ,0);當中第一個參數name的格式是<package_name>_preferences;
三、getDefaultSharedPreferences():就是我們樣例的方式,通過Android的偏好管理器來獲取其所管理的preferences。

Preferenece數據的操作

在上面的樣例中,preference的數值會被保留,并且能夠在其它的activity中讀取。假設須要清除數據,能夠通過remove()清除某個名字的prefernece,clear()清除全部的preferences。我們能夠通過edit()獲取preferences的editor,進而進行編輯,改動后,通過commit()將改動值保存。

Preferenece XML

Preference的XML能夠通過PreferenceCategory來進行組織。PreferenceCategory能夠將幾個組建組合在一起,并加上標題。我們依舊用前面的xml樣例,通過PreferenceCategory來進行組織,例如以下:和之前的樣例比較,將chekcbox和rintong組織成為一個category,并加上了"simple Preferences"的標題。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
? ??? ?<PreferenceCategory android:title="Simple Preferences">
?? ???????? <CheckBoxPreference android:key="checkbox" ..../>
?? ???????? <RingtonePreference android:key="ringtone" ... />

? ???? </PreferenceCategory>
</PreferenceScreen>

PreferenceCategory也能夠嵌套PreferenceScreen,PreferenceScreen中的內容,將通過還有一屏來顯示,我們在上面樣例后面加入一個嵌套了PreferenceScreen的PreferenceCategory。整個PreferenceScreen作為一個組件出現,點擊后新的一屏,由入PreferenceScreen定義。通過這個關系,我們能夠組織自己的preference架構。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
?????? <PreferenceCategory android:title="Simple Preferences">
?????? ? ?? <CheckBoxPreference android:key="checkbox" ..../>
??????????? <RingtonePreference android:key="ringtone" ... />
?????? </PreferenceCategory>

? ??? ?<PreferenceCategory android:title="Detail Screens">
? ??? ??? ?<PreferenceScreen android:title="Detail"
? ??? ??? ??? ?android:summary="Addtional preference help in another page">
? ??? ??? ??? ?<CheckBoxPreference
android:key="checkbox2"
? ??? ??? ??? ??? ?android:title="Another Checkbox"
? ??? ??? ??? ??? ?android:summary="On or Off, It's a problem...."
/>
? ??? ??? ?</PreferenceScreen>
? ??? ?</PreferenceCategory>
</PreferenceScreen>

在前面的樣例中我們使用了CheckBox和Ringtong,在以下的樣例,我們實驗另外的兩個組建EditText和List,這兩種都是已彈框的方式。在上面的樣例我們繼續添加內容

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen ...>
? ??? ?...... ?? ?

? ??? ?<PreferenceCategory android:title="Other Preferences">
? ??? ??? ?<EditTextPreference android:key="text"
? ??? ??? ??? ?android:title="
Text Entry Dialog"
? ??? ??? ??? ?android:summary="
Click to pop up a field for entry"
? ??? ??? ??? ?android:dialogTitle="
Enter something useful"/>
? ??? ??? ?<ListPreference android:key="list"
? ??? ??? ??? ?android:title="
Selection Dialog"
? ??? ??? ??? ?android:summary="
Click to pop yo a list for select"
? ??? ??? ??? ?android:entries="@array/cities"
? ??? ??? ??? ?android:entryValues="@array/airport_codes"

? ??? ??? ??? ?android:dialogTitle="
Choose a City"/>
? ??? ?</PreferenceCategory>
</PreferenceScreen>

在list中由兩個引用@array/cities和@array/airport_codes,我們在資源文件里定義此兩array。內容例如以下:
<resource>
?? ? <string-array>
?? ??? ?<item>Pittsburgh</item>
?? ??? ?<item>Allentown/Bethlehem</item>
?? ??? ?<item>Erie</item>
?? ???? ... ...
?? ?</string-array>
?? ?<string-array name="airport_codes">
?? ??? ?<item>PHL</item>
?? ??? ?<item>PIT</item>
?? ??? ?<item>ABE</item>
?? ???? ... ...
?? ?</string-array>
</resources>

執行結果如右圖所看到的。對于EditText,鍵值對保存的值是String,即用戶在輸入框中輸入的內容。List的情況略微復雜一些,在設置ListPreference的屬性有一個entires,這是在List顯示給用戶看的內容,假設我們去獲取preference的值,在這個樣例為prefs.getString("list", "<unset>");,則返回在entryValues相應的數值,比如我們選擇了第一個item:Pittsburgh,則獲取的值為PHL。entries和entryValues是一一相應的。

相關鏈接: 我的Android開發相關文章

轉載于:https://www.cnblogs.com/blfshiye/p/4557317.html

總結

以上是生活随笔為你收集整理的Android学习笔记四十Preference使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。