PreferenceActivity、PreferenceFragment使用
文件夹
前言
转来转去又回到了Android,闲话少说。这里是參考Android原生的Settings应用来介绍一下PreferenceActivity、PreferenceFragment和headers的使用。
PreferenceActivity
我们先通过一个简单的样例来学习一下PreferenceActivity的使用。
preferences_scenario_1.xml
我们先通过xml文件来定义一个简单的preference界面,res/xml/preference_scenario_1.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceScreen
android:summary="@string/next_screen_title"
android:title="@string/next_screen_summary" >
<CheckBoxPreference
android:key="@+id/next_screen_checkbox_preference"
android:summary="@string/checkbox_summary"
android:title="@string/checkbox_title" />
</PreferenceScreen>
<PreferenceCategory android:title="@string/category_title"
android:summary="@string/category_title">
<CheckBoxPreference
android:defaultValue="false"
android:key="pref_otificationskey"
android:title="@string/checkbox_title" >
</CheckBoxPreference>
<ListPreference
android:entries="@array/people_name"
android:entryValues="@array/people_value"
android:key="pref_SyncFrequencykey"
android:summary="@string/list_summary"
android:title="@string/list_title" >
</ListPreference>
</PreferenceCategory>
</PreferenceScreen>
涉及到的string.xml内容例如以下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="next_screen_title">下一屏选项</string>
<string name="next_screen_summary">下一屏</string>
<string name="checkbox_summary">我非常帅</string>
<string name="checkbox_title">我刷吗?
</string>
<string name="category_title">我喜欢</string>
<string name="list_title">人名列表</string>
<string name="list_summary">我喜欢的人名</string>
</resources>
Preference Activity
在Android3.0之前。PreferenceActivity是用来呈现Preference Screens的,所以假设要支持Android3.0之前的系统,还是要继承PreferenceActivity类来呈现Preference Screens。演示样例代码例如以下:
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class CustomPreferenceActivity extends PreferenceActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_scenario_1);
}
}
重写oncreate方法。而且调用addPreferencesFromResource方法来载入xml布局文件。
别忘了。须要在AndroidManifest.xml中声明这个CustomPreferenceActivity。
注意:
PreferenceActivity的addPreferencesFromResource方法已经在Android3.0(API LEVEL 11)之后废弃了。Android3.0之后,推荐使用PreferenceFragment来呈现Preference Screen。
演示
在其它activity里,能够通过startActivity来启动这个PreferenceActivity,演示图例如以下:
PreferenceFragment
xml布局文件
xml文件我们能够复用上面PreferenceActivity的布局文件。
Preference Fragment
演示样例代码例如以下:
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class CustomPreferenceFragment extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_scenario_1);
}
}
Preference Activity管理Fragment
演示样例代码例如以下:
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class CustomPreferenceActivity extends PreferenceActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new CustomPreferenceFragment()).commit();
}
}
适配
为了同一时候适配Android3.0之前之后的系统。我们能够通过Build.VERSION.SDK_INT在代码里自己主动推断来决定怎样呈现Preference Screen。演示样例代码例如以下:
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class CustomPreferenceActivity extends PreferenceActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
addPreferencesFromResource(R.xml.preference_scenario_1);
} else {
getFragmentManager().beginTransaction().replace(android.R.id.content, new CustomPreferenceFragment()).commit();
}
}
}
PreferenceActivity、PreferenceFragment使用的更多相关文章
- [Module] 03 - Software Design and Architecture
本篇涉及内容: ORM框架(无需再用contentprovider或者sqlitedatebasehelper之类的古董工具了) 规划各种业务Bean文件(配合ORM框架) 设计一个好的请求基类(Ba ...
- Android笔记——PreferenceActivity结合PreferenceFragment创建设置界面
1.创建类继承PreferenceActivity 2.该类必须重写OnBuildHeaders和isValidFragment方法. (1)OnBuildHeaders方法中使用lo ...
- 自定义PreferenceActivity和PreferenceFragment的样式
感谢:http://blog.csdn.net/luck_apple/article/details/7064004 这篇文章讲的是如何定义fragment的样式,基本布局都是从源码中弄过来的.通过设 ...
- Android偏好设置(3)启动偏好设置后显示的界面PreferenceActivity和PreferenceFragment
Creating a Preference Activity To display your settings in an activity, extend the PreferenceActivit ...
- Android数据存储(二)----PreferenceFragment详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- PreferenceActivity的使用
PreferenceActivity是一个非常有用的基类,当我们开发Android项目时避免不了选项设置,这些设置习惯用Preference来保存.Android专门为这种Activity提供了便捷的 ...
- Android实战技巧之六:PreferenceActivity使用详解
一.写作前面 当我们做应用的时候,需要用户配置一些信息,而这就是通常所说的应用设置. 对于Android系统来说,系统本身的设置带来的用户体验和习惯已经深入人心,在我们的应用中同样用到类似的设置页, ...
- PreferenceFragment 使用 小结
Perference也就是我们常说的偏好设置,首选项设置,能够自己主动保存一些数据,比如我们在上一次使用的时候的一些内容,则在下一次启动后依旧生效,而不须要再进行配置.当用户改变设置时,系统就会更新S ...
- Android Fragement学习笔记(三)----PreferenceFragment的使用
相信大家对Perference都比較熟悉了,也就是我们常说的偏好设置,首选项设置,能够保存一些数据,比如我们在上一次使用的时候的一些内容,希望在下一次启动后依旧生效,而不须要再进行配置那么麻烦.一般这 ...
随机推荐
- Java类和对象6
按要求编写Java应用程序. (1)建立一个名叫Cat的类: 属性:姓名.毛色.年龄 行为:显示姓名.喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输出该 ...
- T4701 【卜卜】树状数组模板
题目背景 令 夜 色 的 钟 声 响 起 令 黄 昏 (起 始) 的 钟 声 响 起 我 爱 (渴 望) 的 就 只 有 你 我 爱 ( 渴 望 ) 你 正因如此 独自安静地哭泣吧 正因如此 无论你在 ...
- windows 实用DOS命令。
1. findfind方法要比findstr要简单,参数要少.find /? 命令可以查看所有find命令的参数.find命令的基本格式是这样的:find "要查找的字符串" 要查 ...
- 共用体 union
共用体是一种数据格式,能够存储不同的数据类型,但只能同时存储其中的一种类型. union one4all { int int_val; double double_val; long long_val ...
- info---Linux下info格式的帮助指令。
info命令是Linux下info格式的帮助指令. 它的几个常用快捷键. ?键:它就会显示info的常用快捷键. N键:显示(相对于本节点的)下一节点的文档内容. P键:显示(相对于本节点的)前一节点 ...
- 监控mysqld服务
#!/bin/bash #监控mysqld服务 #telnet 192.168.122.171 3306 | grep Connected | wc -l #远程检查 #num=`netstat -n ...
- 以替换为主的疯狂填词、sub()介绍
去年接到一个任务,一直给拖到了今天,再这么下去可不行,今天我就要让你们看看我的厉害 任务是这样的:创建一个程序,读入文本文件,并让用户在该文本出现ADJECTIVE .NOUN.ADVERB或VERB ...
- 今日SGU 6.5
sgu 160 题意:给你n个数字 数字范围 1 到 m 问你从中取出任意数量的数字使得这些数字的积取模m最大 收获:dp,记录dp的路径 #include<bits/stdc++.h> ...
- P3649 [APIO2014]回文串(回文树)
题目描述 给你一个由小写拉丁字母组成的字符串 ss .我们定义 ss 的一个子串的存在值为这个子串在 ss 中出现的次数乘以这个子串的长度. 对于给你的这个字符串 ss ,求所有回文子串中的最大存在值 ...
- 一个Web报表项目的性能分析和优化实践(四):MySQL建立索引,唯一索引和组合索引
先大致介绍下项目的数据库信息. 数据库A:主要存放的通用的表,如User.Project.Report等. 数据库B.C.D:一个项目对应一个数据库,而且这几个项目的表是完全一样的. 数据库表的特点 ...