1.PreferenceFragment介绍
a.PreferenceFragment实际为Fragment的一个子类
b.创建一个PreferenceFragment需要绑定一个xml来显示视图
c.绑定后没就可以当作普通Fragment使用,只是每new一个实例就会创建一个SharePreference,把之前绑定的xml中的值写入保存(即运行时候,会自动在/data/data/<packagename>/shared_prefs/目录生成一个文本文件)。
2.使用步骤
a.创建一个PreferenceFragment子类
package com.yuncai.menjin.transition;import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.support.annotation.Nullable;
import android.util.Log;/*** Function:* Created by TianMing.Xiong on 18-10-25.*/public class NavigationSummary extends PreferenceFragment implements Preference.OnPreferenceChangeListener{public static NavigationSummary newInstance() {return new NavigationSummary();}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);// xml文件夹下的一个xx_preference.xml中一个<PreferenceScreen/>标签对应一个PreferenceFragmentaddPreferencesFromResource(R.xml.preferences);// 获取级别描述(组)Preference set_navigation = getPreferenceManager().findPreference("set_navigation");CharSequence summary = set_navigation.getSummary();CharSequence title = set_navigation.getTitle();Log.e("TAG","summary:"+summary+",title:"+title);// 监听开关按钮Preference navigation_is_show_and_hide = getPreferenceManager().findPreference("navigation_is_show_and_hide");// 用于监听哪个Preference的回调,用key标识navigation_is_show_and_hide.setOnPreferenceChangeListener(this);}/*** 必须返回true,否则newValue值永远是false* @param preference* @param newValue* @return*/@Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {String key = preference.getKey();Log.e("TAG","key:"+key+",value:"+newValue);return true;}
}
// 输出:
// 01-03 18:30:16.160 3450-3450/com.yuncai.menjin.transition E/TAG: summary:用于导航栏设置,title:导航栏设置
// 01-03 18:30:24.720 3450-3450/com.yuncai.menjin.transition E/TAG: key:navigation_is_show_and_hide,value:false
// 01-03 18:30:26.130 3450-3450/com.yuncai.menjin.transition E/TAG: key:navigation_is_show_and_hide,value:true
b.在res文件夹下创建一个xml文件夹,新建一个以<PreferenceScreen>为根节点的xml文件preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><!-- 设置的类别 --><PreferenceCategoryandroid:key="set_navigation"android:summary="用于导航栏设置"android:title="导航栏设置"><CheckBoxPreferenceandroid:key="navigation_is_show_and_hide"android:summary="使设备底部导航栏不可见"android:defaultValue="false"android:title="隐藏导航栏"/></PreferenceCategory>
</PreferenceScreen>
c.在fragment中绑定
即之前fragment中的代码
addPreferencesFromResource(R.xml.preferences);










