Android開發教程:PreferenceActivity使用簡介


當我們的應用需要保存用戶設置信息的時候,你可能會想到用之後學習過的Activity+Preference來完成,前者用於界面構建 後者用於保存用戶的設置信息。這理論上來講這是可行的,但是實際操作起來卻是一件很繁瑣的事情,特別是當設置項較多的時候, 每個設置選項都要建立與其對應的Preference,還要即時保存用戶設置的改變。其實Android已經爲我們提供了用於設置界面的組件,那就是PreferenceActivity。Android系統本身就大量用到了PreferenceActivity來對系統進行信息配置和管理,比如Android系統中的設置。下面我們模擬Android中的網絡設置,運行效果如下:

 

 

1、如何創建一個PreferenceActivity?

我們藉助Eclipse可以很方便的創建PreferenceActivity,新建一個工程,然後添加一個Android xml文件,這裏需要選擇的是Preference而不是layout或其他,當我們輸入名稱後可以在res/xml下找到你新建的xml文件。接着我們可以通過可視化的結構設計或者xml源碼設計添加設置項。下面是我們這個例子中的設置項信息:

1 <?xml version="1.0" encoding="utf-8"?>
2 <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android" >
3  
4     <PreferenceCategory
5         android:key="set_net"
6         android:title="網絡設置" >
7         <CheckBoxPreference
8             android:key="set_3g"
9             android:summary="使用3G雖可提高數據載入速度,但可能會降低電池壽命"
10             android:title="啓用3G" />
11         <CheckBoxPreference
12             android:key="set_2g"
13             android:summaryOff="打開蜂窩數據"
14             android:summaryOn="關閉蜂窩數據"
15             android:title="蜂窩數據" />
16  
17         <Preference
18             android:key="set_2g_net"
19             android:title="蜂窩數據網絡" />
20  
21         <CheckBoxPreference
22             android:key="set_roving"
23             android:summary="在境外時請關閉數據漫遊"
24             android:title="數據漫遊" />
25     </PreferenceCategory>
26     <PreferenceCategory
27         android:key="set_VPN_Category"
28         android:title="VPN設置" >
29         <Preference
30             android:key="set_VPN"
31             android:title="設置VPN" />
32     </PreferenceCategory>
33  
34 </PreferenceScreen>

 

那麼如果顯示呢?然後我們創建一個Activity繼承自PreferenceActivity類即可。代碼如下:

1 package com.liuzhichao.sharedpreferences;
2  
3 import android.os.Bundle;
4 import android.preference.PreferenceActivity;
5  
6 public class SharedPreferencesDemoActivity extends PreferenceActivity  {
7  
8     @Override
9     public void onCreate(Bundle savedInstanceState) {
10         super.onCreate(savedInstanceState);
11         // 所的的值將會自動保存到SharePreferences
12         addPreferencesFromResource(R.xml.netsetting);
13     }
14  
15 }

運行工程,效果即是我們之前的那張效果圖。

2、PreferenceActivity元素說明

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

 

 

  • CheckBoxPreference:CheckBox選擇項,對應的值的ture或flase
  • EditTextPreference:輸入編輯框,值爲String類型,會彈出對話框供輸入。
  • ListPreference: 列表選擇,彈出對話框供選擇。
  • Preference:只進行文本顯示,需要與其他進行組合使用。
  • PreferenceCategory:用於分組。
  • PreferenceScreen:PreferenceActivity的根元素
  • RingtonePreference:系統玲聲選擇。
  • PrefeneceActivity都提供了哪幾種元素可供使用

 

常見屬性說明:

title:顯示的標題

key:唯一標識(至少在同一程序中是唯一),SharedPreferences也將通過此Key值進行數據保存,也可以通過key值獲取保存的信息

summary:副標題、說明(小字體顯示)

defaultValue:默認值(當然,此處只能是true或false了)

android:summaryOn:屬性開啓的時候的說明

android:summaryOff:屬性關閉時候的說明

dialogTitle:彈出對話框的標題

entries:列表中顯示的值。爲一個數組,通讀通過資源文件進行設置。

entryValues:列表中實際保存的值,也entries對應。爲一個數組,通讀通過資源文件進行設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章