从android3.0开始preference框架做了重大改变
框架由一下四部分组成
1、preference screen布局
一个xml文件,指定了要显示的Preference控件。
每个控件应当至少包含4个属性key,title,summary,default value
2、preference activity和preference fragment
android3.0以前是preference activity直接包含preference screen。3.0以后,也为了兼容以后的版本,preference fragment包含preference screen,
preference headers包含preference fragment,preference activity包含headers
涉及到两个api
public class UserPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.userpreferences);
}
}
public class PreferenceFragmentActivity extends PreferenceActivity { @Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers,target);
}
}
3、preference headers
也是一个xml资源,描述了fragment在activity中如何分组,显示。每个header读要与一个fragment想关联
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="com.qunzheng.anim.ui.UserPreferenceFragment"
android:title="设置"
android:summary="地震刷新设置"/>
</preference-headers>
4、onPreferenceChangeListener
preference改变的话触发的事件,当activity与service对preference中的值敏感的话尤其又用。
sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { }
});