1. 在资源文件的xml文件夹(如不存在就自己创建)下面创建headers_preferences.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="com.example.usersetting.SettingsActivity$SettingsFragment"
android:title="Prefs 1"
android:summary="An example of some preferences." />
</preference-headers>
2. 在PreferenceActivity类中加载该文件
<pre name="code" class="java">@Override
public void onBuildHeaders(List<Header> target) {
//加载headers布局
loadHeadersFromResource(R.xml.headers_preferences, target);
}
3. 并且在PreferenceActivity类中创建PreferenceFragment类来加载具体布局
public static class SettingsFragment extends PreferenceFragment {
<span style="white-space:pre"> </span>private static final String TAG = "SettingsFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Can retrieve arguments from headers XML.
Log.i(TAG,"设置默认值");
PreferenceManager.setDefaultValues(getActivity(), R.xml.settings_preferences, false);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.settings_preferences);
}
}
该fragment使用addPreferencesFromResource方法加载xml文件,其布局文件代码如下:<?xml version="1.0" encoding="UTF-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/settings_title">
<CheckBoxPreference
android:title="@string/wifi_title"
android:key="wifiTitle"
android:defaultValue="true"
/>
<CheckBoxPreference
android:title="@string/wifi_title"
android:defaultValue="false"
/>
<EditTextPreference
android:key="edittext_preference"
android:title="@string/edit_title"
android:summary="@string/edit_summary"
android:dialogTitle="@string/edit_dialog_title" />
</PreferenceCategory>
</PreferenceScreen>设置默认值问题:1. 可以在PreferenceFragment对应的布局文件中设置默认值,即设置组件的defalueValue属性
2. 可以使用SharedPreferences来设置默认值,利用key/value形式
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
preferences.getBoolean("wifiTitle", false);SharedPreferences.getBoolean方法在xml文件中没有设置默认值时生效,如:CheckBoxPreference设置了defalueValue属性,加载时就依照该属性;没有设置defaultValue属性,则getBoolean自动设置其属性,保存在偏好文件中3. 当用户自身修改了默认值,PreferenceFragment会自动保存其修改的值
本文详细介绍如何在Android应用中实现偏好设置功能,包括创建headers_preferences.xml文件、加载偏好设置页面及设置默认值的方法,并介绍了多种设置默认值的方式。
1267

被折叠的 条评论
为什么被折叠?



