PreferenceActivity,PreferenceScreen


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;
    }
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM