偏好設定
建立 PreferenceActivity
1. 新增一個 Android xml,類型選擇 Preference,注意 Folder 路徑是 res/xml。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
</PreferenceScreen>
Preference 提供的元素如下:
CheckBoxPreference:CheckBox 勾選盒,對應的值 true 或 false 。
CheckBoxPreference:CheckBox 屬性:
title:顯示標題文字。
key:唯一值(至少在同一隻程式中是唯一),SharedPreferences 也將通過對此 key 值進行資料的保存,也可以通過 key 值取得保存的訊息。
summary:副標題(小字題體顯示)
defaultValue:預設值(只有 true 或 false 可以選擇)
<CheckBoxPreference
android:defaultValue="true"
android:key="saveoldFlag"
android:summary="@string/summary"
android:title="@string/title" />
EditTextPreference 文字輸入框,值為 String 類型,會彈出對話框供輸入。
Preference 屬性:
title:顯示標題文字。
key:唯一值(至少在同一隻程式中是唯一),SharedPreferences 也將通過對此 key 值進行資料的保存,也可以通過 key 值取得保存的訊息。
<EditTextPreference
android:key="number_edit"
android:title="@string/title"/>
ListPreference 清單列表,彈出對話框供選擇。
ListPreference 屬性:
title:顯示標題文字。
key:唯一值(至少在同一隻程式中是唯一),SharedPreferences 也將通過對此 key 值進行資料的保存,也可以通過 key 值取得保存的訊息。
dialogTitle:彈出對話框的標題
entries:清單中的選項值。通常透過讀取資源文件進行設置。
entyValues:列表中實際保存的值,也是 entries 的對應值,透過讀取資源文件行置。
<ListPreference
android:dialogTitle="@string/summary"
android:entries="@array/department"
android:entryValues="@array/department_value"
android:key="depart_value"
android:title="@string/title" />
<resources>
<string-array name="department" >
<item>綜合部</item>
<item>行政部</item>
<item>外貿部</item>
</string-array>
<string-array name="department_value" >
<item>001</item>
<item>002</item>
<item>003</item>
</string-array>
</resources>
Preference 只有顯示文字,需要和其他功能配合使用。
Preference 屬性:
title:顯示標題文字。
key:唯一值(至少在同一隻程式中是唯一),SharedPreferences 也將通過對此 key 值進行資料的保存,也可以通過 key 值取得保存的訊息。
summary:副標題(小字題體顯示)
dependency:附屬,即標示此元素附屬於某一個元素(通常為 CheckBoxPreference),dependency 值為所附屬元素的 key。如下,附屬於 apply_bluetooth (CheckPreference 元素)中,當 CheckPreference值為true時,Preference 才可以使用,否則為不可用。
<Preference
android:summary="@string/summary"
android:title="@string/title"
android:dependency="apply_bluetooth"
android:key="bluetooth_setting"/>
PreferenceCategory 用於分組。
PreferenceCategory 屬性:
title:顯示標題文字。
key:唯一值(至少在同一隻程式中是唯一),SharedPreferences 也將通過對此 key 值進行資料的保存,也可以通過 key 值取得保存的訊息。
PreferenceScreen:PreferenceActivity 根元素。
RingtonePreference 系統鈴聲選擇。
2.新增一個 class,類型選擇 PreferenceActivity。
addPreferencesFromResource:取得 Preference 的 xml
public class prdef extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.addPreferencesFromResource(R.xml.settings);
}
}
取得 CheckBoxPreference:CheckBox 的值
PreferenceManager.getDefaultSharedPreferences(context).getBoolean("元素 key", 預設值);
public static boolean isSaveOld(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("saveoldFlag", true);
}