Android開發之PreferenceActivity .
今天我們來講PreferenceActivity的使用。我們先來認識一下它,看看它長什麼樣?嗬嗬,截圖如下:
看到沒?這就是PreferenceActivity.看起來蠻眼熟的,在哪見過。嗬嗬,對,在我們得模擬器“設置”—>“無線和網絡”中,就使用了這個。嗬嗬,下麵來跟據一個項目實例,來講述它的具體應用。
1、 創建Android項目,命名為PreferenceActivity。
2、 在values目錄下新建一個array.xml文件,以備下麵程序使用,該文件代碼如下:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="entries">
- <item>test1</item>
- <item>test2</item>
- <item>test3</item>
- </string-array>
- <string-array name="entriesvalue">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- </string-array>
- </resources>
3、 在res目錄下新建一個xml目錄,在裏麵新建一個preference.xml文件,該文件的具體內容如下:
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen xmlns:android="https://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <PreferenceCategory android:title="我的位置">
- <CheckBoxPreference
- android:key="first"
- android:title="飛行模式"
- android:defaultValue="true"
- />
- <CheckBoxPreference
- android:key="second"
- android:title="Wi-Fi"
- android:summaryOn="開啟"
- android:summaryOff="關閉"
- android:defaultValue="true"
- />
- <Preference
- android:key="third"
- android:title="Wi-Fi設置"
- android:summary="設置和管理無線接入點"
- />
- <ListPreference
- android:key="ListPreference"
- android:title="ListPreference"
- android:summary="ListPreference測試"
- android:dialogTitle="ListPreference"
- android:entries="@array/entries"
- android:entryValues="@array/entriesvalue"
- />
- <EditTextPreference
- android:key="EditTextPreference"
- android:title="EditTextPreference"
- android:summary="點擊輸入"
- android:dialogTitle="輸入設置"
- />
- <RingtonePreference
- android:key="RingtonePreference"
- android:title="RingtonePreference"
- android:summary="選擇鈴聲"
- />
- </PreferenceCategory>
- </PreferenceScreen>
4、 以上做好後,我們就隻要修改程序中的部分代碼了。首先,我們得讓它繼承自PreferenceActivity的Activity,然後在主程序中調用addPreferencesFromResource(R.xml.preference);就可以了。具體代碼如下:
- public class PreferenceActivityTest extends PreferenceActivity implements OnSharedPreferenceChangeListener{
- SharedPreferences prefs;
- ListPreference listPreference;//聲明ListPreference
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.preference);
- //我們可以通過各個preference的key來得到Preference的view,從而可以用它進行相關操作
- listPreference=(ListPreference)findPreference("ListPreference");
- String str=listPreference.getKey();
- System.out.println(str);
- /*PreferenceActivity中的設置存儲是完全自動的,你不需要再用代碼去實現
- * 設置的存儲,PreferenceActivity創建後會自動創建一個配置文件/data/
- * data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。
- * 如果要獲取該文件中的值,我們可以通過以下方式取得*/
- prefs=PreferenceManager.getDefaultSharedPreferences(this);
- String value=prefs.getString("ListPreference", "xyz");
- Toast.makeText(this, value, Toast.LENGTH_LONG).show();
- }
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
- Preference preference) {
- // TODO Auto-generated method stub
- if(preference.getKey().equals("third")){
- //這裏可以操作,實現界麵的跳轉
- Intent intent=new Intent();
- intent.setClass(this, RunActivity.class);
- startActivity(intent);
- }
- return super.onPreferenceTreeClick(preferenceScreen, preference);
- }
- //當選擇或是輸入不同的值時,他們的值會自動保存到sharedpreferences中,當值發生改變的時候會觸發
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
- String key) {
- // TODO Auto-generated method stub
- }
- }
5、 到此我們得項目框架就已經搭建好了,單擊執行便會得到我們以上的效果。
但是我們得任務還沒完,下麵的講解才是本節的重點。學習PreferenceActivity我們需要注意一下幾點:
第一, preference下的View是有限的,隻有下麵幾個:
- CheckBoxPreference:CheckBox選擇項,對應的值的ture或flase
- EditTextPreference:輸入編輯框,值為String類型,會彈出對話框供輸入。
- ListPreference: 列表選擇,彈出對話框供選擇。
- Preference:隻進行文本顯示,需要與其他進行組合使用。
- PreferenceCategory:用於分組。
- RingtonePreference:係統玲聲選擇
第二,PreferenceActivity布局中的一些屬性。
android:key 唯一標識符。它對應保存的XML保存的配置文件中的節點的 name屬性。android:defaultValue 默認值,對應XML中的Value屬性的值。
android:title:顯示標題(大字體顯示)。
android:summary:副標題(小字體顯示)。
android:dialogTitle:彈出對話框的標題
android:entries:列表中顯示的值。為一個數組,通讀通過資源文件進行設置。
android:entryValues:列表中實際保存的值,與entries對應。
第三,當PreferenceActivity上的View有所更改時,係統會自動將對應的值更新到XML配置文件中,該文件可以在android 的 file explorer 中的 data/data/"yourPageName"/shared_prefs/"yourpageName"_prefenrences.xml中找到。“yourpageName”表示你項目所在的包。
第四,如何響應PreferenceActivity操作。
其實,我們隻要重寫PreferenceActivity的onPreferenceTreeClick的方法就可以了,通過參數preference來判斷是對那一個元素進行的,並根據需要進行操作。
到此,內容已經基本上剖析完全了。嗬嗬!
最後更新:2017-04-02 06:51:53