<Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
简介
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 (3) ~ PreferenceFragment的更多相关文章
- Bootstrap <基础三十二>模态框(Modal)插件
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用 ...
- Bootstrap <基础三十>Well
Well 是一种会引起内容凹陷显示或插图效果的容器 <div>.为了创建 Well,只需要简单地把内容放在带有 class .well 的 <div> 中即可.下面的实例演示了 ...
- Android基础之使用Fragment控制切换多个页面
Android官方已经提供了Fragment的各种使用的Demo例子,在我们SDK下面的API Demo里面就包含了Fragment的各种使用例子,需要看Demo的朋友,直接看API Demo那个程序 ...
- <Android基础>(三) UI开发 Part 3 RecyclerView
RecyclerView 1)RecyclerView的基本用法 2)横向滚动和瀑布流滚动 3)注册点击事件 3.6 强大的滚动控件 RecyclerView ListView缺点: 1.不使用技巧优 ...
- Android中GridView拖拽的效果【android进化三十六】
最 近看到联想,摩托罗拉等,手机launcher中有个效果,进入mainmenu后,里面的应用程序的图标可以拖来拖去,所以我也参照网上给的代码,写了 一个例子.还是很有趣的,实现的流畅度没有人家的 ...
- <Android基础>(三) UI开发 Part 2 ListView
ListView 1)ListView的简单用法 2)定制ListView界面 3)提升ListView的运行效率 4)ListView的点击事件 3.5 ListView 3.5.1 ListVie ...
- Android基础之使用Fragment控制切换多个页面[转]
Android官方已经提供了Fragment的各种使用的Demo例子,在我们SDK下面的API Demo里面就包含了Fragment的各种使用例子,需要看Demo的朋友,直接看API Demo那个程序 ...
- Android笔记三十四.Service综合实例二
综合实例2:client訪问远程Service服务 实现:通过一个button来获取远程Service的状态,并显示在两个文本框中. 思路:如果A应用须要与B应用进行通信,调用B应用中的getName ...
- <Android 基础(十九)> CoordinatorLayout
介绍 CoordinatorLayout,中文翻译,协调布局,顾名思义,此布局中的子View之间,子View与父布局之间应该是可以协调工作的,如何协调,Behavior. 今天看下Android St ...
- <Android 基础(十八)> XLIFF
介绍 XLIFF ,XML Localization Interchange File Format,XML本地化数据交换格式. 实际使用 1.布局文件 activity_main.xml <? ...
随机推荐
- vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件
vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源 ...
- web工程迁移---jboss5迁移到jboss6
这几天在做web工程的迁移,从jboss 5迁移到jboss 6.3. 在做迁移的过程中遇到了一些问题,在这里记录一下. 首先来看一下jboss5和jboss6.3的区别: 上面两幅 ...
- Mac安装PhoneGap3
Mac安装PhoneGap3第一步需要安装NodeJS,在Mac下有一个.pkg安装包(Mac OS X Installer (.pkg),下载下来一路点击就可以安装成功了.在Terminal控制台输 ...
- Ehcache的视频-如何用Ehcache提升你的Java应用性能
Java应用最广的缓存(分布式缓存)Ehcache的Youtube介绍视频 (需-翻-墙)
- error C4996: 'scanf': This function or variable may be unsafe.
项目属性-配置属性-c/c++-预处理器- 在下面的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS 添加完成后应用并退出 http://jingyan.baidu.com/al ...
- 二:理解ASP.NET的运行机制(例:基于HttpHandler的URL重写)
url重写就是把一些类似article.aspx?id=28的路径重写成 article/28/这样的路径 当用户访问article/28/的时候我们通过asp.net把这个请求重定向到article ...
- 详解C#委托和事件(二)
一.当我们使用关键字delegate声明一个自定义委托类型时,实际上是声明了一个该名称的类类型,继承自抽象类System.MulticastDelegate,还包含实例方法Invoke.BeginIn ...
- Go http handler 中间件
在http的handler处理中加上中间件,可以进行过滤.记录日志.统计和统一返回结果 package main import ( "fmt" "net/http&quo ...
- es-05-获取 resthighlevelclient及api
在6.x以前, 使用最多的是transportclient, 但在7.x会被废弃, 先说以前的创建方式: 具体可见:https://www.cnblogs.com/wenbronk/p/6383194 ...
- VIM学习网址和资料收集
摘要:这篇博客主要收集一些学习VIM的好网址和资料 娄老师的一篇VIM 原文地址:http://www.cnblogs.com/rocedu/p/6012444.html Github上VIM的学习 ...