PreferenceActivity的使用
step1.寫一個類繼承PreferenceActivity重寫onCreate方法
step2.在res下新建一個文件夾,命名為:xml
step3.在xml文件夾下新建一個文件preference.xml(具體內容如下)
step4.在PreferenceActivity的onCreate方法中addPreferencesFromResource(R.xml.preference);
step5.運行程序,並填入數據時,會自動保存到 <包名>_preferences.xml 文件中
step6.其他Activity可以通過PreferenceManager.getDefaultSharedPreference(Context)來獲取SharedPreference對象。然后從xml中取設置的值。
preference.xml內容如下:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="first prefenencescreen" android:summary="first prefenencescreen" > <EditTextPreference android:key="username" android:title="用戶名" android:summary="填入正確用戶名" /> <CheckBoxPreference android:key="light" android:title="網絡開關" android:summaryOn="打開" android:summaryOff="關閉" /> <ListPreference android:key="cache" android:entries="@array/set_cache_size_entries" android:entryValues="@array/set_cache_size_entry_values" android:dialogTitle="設置緩存" android:title="設置緩存" /> <PreferenceCategory android:title="其他設置" > <MultiSelectListPreference android:title="對選的title" android:key="books" android:entries="@array/set_cache_size_entries" android:entryValues="@array/set_cache_size_entry_values" /> <SwitchPreference android:summaryOn="sumOn" android:summaryOff="sumOff" android:switchTextOn="textOn" android:switchTextOff="textOff" android:key="switchonoff" android:title="switch" /> </PreferenceCategory> </PreferenceScreen>
說明:
android:key 保存到xml中的鍵,我們填寫的內容將作為值
android:title 標題
android:summary 描述,字體偏小,在title下顯示
android:entries 顯示的列表
android:entriesValues 顯示的列表所對應的值,這些值才是真正存到xml中的。
android:inputType="textPassword" EditTextPreference密碼效果
PreferenceCategory定義一個組
可以內嵌一個intent
<PreferenceScreen android:title="內嵌Intent"> <intent android:targetPackage="com.anjoyo.preactivitiy" android:targetClass="com.anjoyo.preactivitiy.Day0105_preferenceactivityActivity" ></intent> </PreferenceScreen>
targetPackage為intent啟動程序的包名
targetClass為類的包名和類名
可以添加監聽:
addPreferencesFromResource(R.xml.settingpreference); PreferenceScreen ps = getPreferenceScreen(); final Preference p = ps.findPreference("username"); EditTextPreference etp = (EditTextPreference) p; //取得鍵值對 對應的值 String value = etp.getText(); etp.setSummary(value); etp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { p.setSummary(newValue.toString()); //return true才會把新值保存起來 return true; } });