PreferenceActivity类包括 preference-headers中定义的PreferenceFragment层次结构。 3.0 以后哦~
FragmentPreferences.java
- <span style="font-size: 14px;">package com.example.preferencedemo;
- import java.util.List;
- import android.preference.PreferenceActivity;
- public class FragmentPreferences extends PreferenceActivity {
- @Override
- public void onBuildHeaders(List<Header> target) {
- this.loadHeadersFromResource(R.xml.preferenceheaders, target);
- }
- }
- </span>
<span style="font-size:14px;">package com.example.preferencedemo;
import java.util.List;
import android.preference.PreferenceActivity;
public class FragmentPreferences extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
this.loadHeadersFromResource(R.xml.preferenceheaders, target);
}
}
</span>
preferenceheaders.xml
- <span style="font-size: 14px;"><?xml version="1.0" encoding="utf-8"?>
- <preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
- <header
- android:fragment="com.example.preferencedemo.UserPreferenceFragment"
- android:summary="refresh settings"
- android:title="settings" >
- </header>
- </preference-headers></span>
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >
<header
android:fragment="com.example.preferencedemo.UserPreferenceFragment"
android:summary="refresh settings"
android:title="settings" >
</header>
</preference-headers></span>
- <span style="font-size: 14px;">package com.example.preferencedemo;
- import android.content.SharedPreferences;
- import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
- import android.os.Bundle;
- import android.preference.PreferenceFragment;
- import android.preference.PreferenceManager;
- import android.util.Log;
- public class UserPreferenceFragment extends PreferenceFragment implements
- OnSharedPreferenceChangeListener {
- private SharedPreferences mSharedPreferences;
- private boolean mIsAutoRefresh;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- this.addPreferencesFromResource(R.xml.mypreference);
- // 为PreferenceActivity中的选项记录的SharedPreferences值被存在app沙箱中,
- // 这使得任何app组件都可以访问它(Activity/Service/BroadcastReceiver)
- mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this
- .getActivity());
- // 需要注册哦
- mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
- mIsAutoRefresh = mSharedPreferences.getBoolean("PREF_AUTO_REFRESH",
- false);
- Log.d("test", "isAutoRefresh: " + mIsAutoRefresh);
- }
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
- String key) {
- Log.d("test", "key: " + key);
- // 根据其值,可以做相应的处理
- // 这个值改过以后,是会被存下来哦~~存在某个.xml文件夹中的
- mIsAutoRefresh = mSharedPreferences.getBoolean(key, false);
- Log.d("test", "isAutoRefresh: " + mIsAutoRefresh);
- }
- }
- </span>
<span style="font-size:14px;">package com.example.preferencedemo;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.util.Log;
public class UserPreferenceFragment extends PreferenceFragment implements
OnSharedPreferenceChangeListener {
private SharedPreferences mSharedPreferences;
private boolean mIsAutoRefresh;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.addPreferencesFromResource(R.xml.mypreference);
// 为PreferenceActivity中的选项记录的SharedPreferences值被存在app沙箱中,
// 这使得任何app组件都可以访问它(Activity/Service/BroadcastReceiver)
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this
.getActivity());
// 需要注册哦
mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
mIsAutoRefresh = mSharedPreferences.getBoolean("PREF_AUTO_REFRESH",
false);
Log.d("test", "isAutoRefresh: " + mIsAutoRefresh);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Log.d("test", "key: " + key);
// 根据其值,可以做相应的处理
// 这个值改过以后,是会被存下来哦~~存在某个.xml文件夹中的
mIsAutoRefresh = mSharedPreferences.getBoolean(key, false);
Log.d("test", "isAutoRefresh: " + mIsAutoRefresh);
}
}
</span>
mypreference.xml
- <span style="font-size: 14px;"><?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
- <PreferenceCategory android:title="MyCategory" >
- <CheckBoxPreference
- android:key="PREF_AUTO_REFRESH"
- android:defaultValue="true"
- android:summary="select to turn on automatic updating"
- android:title="Auto Refresh" />
- </PreferenceCategory>
- </PreferenceScreen></span>
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="MyCategory" >
<CheckBoxPreference
android:key="PREF_AUTO_REFRESH"
android:defaultValue="true"
android:summary="select to turn on automatic updating"
android:title="Auto Refresh" />
</PreferenceCategory>
</PreferenceScreen></span>
源码: