Android PreferenceFragment

来源:互联网 发布:淘宝火拼 编辑:程序博客网 时间:2024/05/17 07:56

Android PreferenceFragment

关键代码

加载Preference

addPreferencesFromResource(R.xml.settings);getPreferenceManager().setSharedPreferencesName("hidden_settings");
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">    <PreferenceCategory        android:key="heart_interval"        android:summary=""        android:title="心跳设置(秒)">        <EditTextPreference            android:key="idle_heart_interval"            android:title=""            android:inputType="number" />        <EditTextPreference            android:key="circuit_heart_interval"            android:title=""            android:inputType="number" />        <EditTextPreference            android:key="expansion_heart_interval"            android:title=""            android:inputType="number" />        <EditTextPreference            android:key="inspect_heart_interval"            android:title=""            android:inputType="number" />    </PreferenceCategory>    <PreferenceCategory        android:key="lbs_interval"        android:summary=""        android:title="定位设置(秒)">        <EditTextPreference            android:key="idle_lbs_interval"            android:title=""            android:inputType="number" />        <EditTextPreference            android:key="circuit_lbs_interval"            android:title=""            android:inputType="number" />        <EditTextPreference            android:key="expansion_lbs_interval"            android:title=""            android:inputType="number" />        <EditTextPreference            android:key="inspect_lbs_interval"            android:title=""            android:inputType="number" />    </PreferenceCategory></PreferenceScreen>

以上是加载普通的EditTextPreference,如果想要加载复杂控件preference,比如TimerPicker

<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">    <PreferenceCategory        android:key="instruction"        android:summary="修改完成之后需要重启程序方可生效"        android:title="设置夜晚省电模式参数">        <CheckBoxPreference            android:disableDependentsState="false"            android:key="isPowerSavingOn"            android:title="是否开启夜晚省电模式" />        <com.main.admin.tdline.fragment.TimerPickerPreference            android:dependency="isPowerSavingOn"            android:key="time_start"            android:title="请选择工作开始时间" />        <com.main.admin.tdline.fragment.TimerPickerPreference            android:dependency="isPowerSavingOn"            android:key="time_stop"            android:title="请选择工作结束时间" />    </PreferenceCategory></PreferenceScreen>

有一点需要注意的是,这样加载的preference,默认情况下summary与text的值是空的(即便有存储的值,在首次打开是text是空的;如果赋值了,当前页面不关闭,再打开是有值的)。所以需要进行初始化

    private void init(){        for(int i = 0; i < 8; i++){            EditTextPreference etp = (EditTextPreference)getPreferenceScreen().findPreference(IntervalManager.keys[i]);            etp.setText(String.valueOf(data[i]));            etp.setSummary(String.valueOf(data[i]));        }    }
0 0
原创粉丝点击