android实现用户选项和设置界面

本文详细介绍如何在Android应用中实现偏好设置功能,包括创建headers_preferences.xml文件、加载偏好设置页面及设置默认值的方法,并介绍了多种设置默认值的方式。

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会自动保存其修改的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值