偏好設定

建立 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);

}