<Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
2016-11-18 11:14
441 查看
简介
PreferenceFragment , 展示一系列的Preference条目并且当与用户有交互时,产生的值会自动保存到SharedPreferences中,通过PreferenceManager#getDefaultSharedPreferences(android.content.Context)可以查看对应的SharedPreferences的值。展示的Preferences的风格会随着系统而改变,通过XML文件可以快速的创建Preferences,官方推荐使用Fragment来实现这类功能。
创建XML
Tag | 意义 |
---|---|
PreferenceScreen | 必须作为根节点,代表整个Preferences屏幕 |
PreferenceCategory | 一组Preferences,便于分类 |
SwitchPreference | 两种状态的preference,开关 |
ListPreference | 列表显示Preference, android:entries设置的内容是我们在设置时看到的内容,而android:entryValues就是保存在preferences.xml中的值 |
CheckBoxPreference | 复选框Preference,勾选和不勾选 |
RingtonePreference | Ringtone选择Preference |
EditTextPreference | 编辑类Preference |
MultiSelectListPreference | 多选类Preference |
常用属性
属性 | 用法 |
---|---|
android:title | 标题 |
android:defaultValue | 默认值 |
android:key | SharedPreference中保存值时使用的Key值 |
android:entries | 列表或者多选框的显示内容 |
android:entryValues | 列表或者多选框保存过程中对应的值 |
代码使用
XML文件<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="无线和网络"> <SwitchPreference android:defaultValue="false" android:title="WLAN" android:key="switch_preference_wlan" /> <SwitchPreference android:defaultValue="false" android:title="蓝牙" android:key="switch_preference_bluetooth" /> <ListPreference android:defaultValue="1" android:title="休眠" android:entries="@array/pref_sleep_interval" android:entryValues="@array/pref_sleep_interval" android:key="list_preference_sleep" /> </PreferenceCategory> <PreferenceCategory android:title="设备" android:persistent="false" android:orderingFromXml="false"> <CheckBoxPreference android:defaultValue="false" android:title="静音" android:key="check_box_preference_virate" /> <RingtonePreference android:defaultValue="" android:title="铃声" android:key="ringtone_preference_ringtone" /> </PreferenceCategory> <PreferenceCategory android:title="隐私和安全"> <EditTextPreference android:defaultValue="Default value" android:selectAllOnFocus="true" android:singleLine="true" android:title="设备名称" android:key="edit_text_preference_devicename" /> <MultiSelectListPreference android:title="辅助功能" android:defaultValue="@array/pref_assit_function" android:entries="@array/pref_assit_function" android:entryValues="@array/pref_assit_function" android:key="multi_select_list_preference_assit" /> </PreferenceCategory> </PreferenceScreen>
arrays.xml文件
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="pref_sleep_interval"> <item>30秒</item> <item>1分钟</item> <item>2分钟</item> <item>5分钟</item> <item>10分钟</item> <item>30分钟</item> </array> <array name="pref_assit_function"> <item>灵犀一指</item> <item>指关节截屏</item> <item>通话录音</item> <item>白科技</item> <item>黑科技</item> </array> </resources>
自定义PreferenceFragment
PreferenceFragment是抽象类,需要自己实现
public class BaseFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { Toast.makeText(getActivity(), preference.toString() + " is Clicked", Toast.LENGTH_LONG).show(); return super.onPreferenceTreeClick(preferenceScreen, preference); } }
Activity中使用
BaseFragment baseFragment = new BaseFragment(); FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.replace(xxxxxx,baseFragment); transaction.commit();
结果
SharedPreference结果<中文乱码是系统问题>
相关文章推荐
- <Android 基础(二十九)> Fragment (2) ~ DialogFragment
- <Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
- <Android 基础(二十九)> Fragment (2) ~ DialogFragment
- <Android 基础(五)> MVVM
- <Android 基础(八)> Palette
- <Android 基础(十七)> ViewPager介绍
- <Android 基础(二十一)> Android 屏幕适配
- <Android 基础(十九)> CoordinatorLayout
- <Android 基础(六)> ActionBar
- <Android 基础(二十)> CoordinatorLayout Behavior
- <Android 基础(十四)> selector
- <Android 基础(十八)> XLIFF
- <Android 基础(九)> Ndk配置与Demo
- <Android 基础(十八)> XLIFF
- <Android 基础(三)> MVP模式
- <Android 基础(八)> Palette
- <Android 基础(十)> FloatingActionButton
- <Android 基础(十二)> TextInputLayout,让输入框更有灵性
- <Android 基础(二十)> CoordinatorLayout Behavior
- <Android 基础(十九)> CoordinatorLayout