
第十五課:Preference Manager
本文介紹如何使用Preference Manager。我們將會以xml建立一個用戶偏好設定(user preference)的PreferenceActivity,並在app開始時載入以前的設定。 PreferenceActivity是個很易用的activity,我們只要為這activity定立一個PreferenceScreen的xml文件,我們就可以完成一個很複雜的偏好設activity,而且 資料也可以自動保存!同時,我們也會學到如何讀取系統自動保存了的設定。
我們先在res中新增一個xml的文件夾,並加入mypref.xml的PreferenceScreen文件。如下:
上邊的xml是本文的重點,首先我們加入一個PreferenceScreen,接著便定義了兩個分類PreferenceCategory,這樣用戶就會更清楚。 在兩個分類中,我們運用了EditTextPreference,CheckBoxPreference,RingtonePreference,ListPreference等四個preference。 你須為它加上一個key,才可以在java中使用(讀取)。ListPreference是較特別的,因為它容許你加入一個列表,並選擇適當的value。 你可以在string.xml文件中加入array,然後在這個PreferenceScreen中載入。詳情可參考youtube,或下載source code。
我們接下來就是建立一個名為Settings的PreferenceActivity(extends PreferenceActivity)。在onCreate內加上:
addPreferencesFromResource(R.xml.mypref);
因為它是個activity,你也要在androidManifest.xml中加上它。然後,馬上回到我們默認生成的主activity(MyPreferenceDemoActivity)。 我們通過PreferenceManager,把SharedPreference找出來,當你需要讀取preference activity中的設定時,便可以根據早前加入的key讀取資料。 如果還沒設定好,也可以使用默認值(default value)。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("name", "KFSOFT"); //"KFSOFT" is default value
我們隨時可以把PreferenceActivity以startActivity方式呼叫出來。
Intent i = new Intent(MyPreferenceDemoActivity.this, Settings.class); startActivity(i);
在測試時,當你選擇了設定後,可以退出app,再重新開啟。你會發現,從前輸入的設定已保存下來。
Download: MyPreferenceDemo