Android  PreferenceActivity与PreferenceFragment

前言

转来转去又回到了Android,闲话少说,这里是参考Android原生的Settings应用来介绍一下PreferenceActivity、PreferenceFragment和headers的使用。

PreferenceActivity

我们先通过一个简单的例子来学习一下PreferenceActivity的使用。

preferences_scenario_1.xml

我们先通过xml文件来定义一个简单的preference界面,res/xml/preference_scenario_1.xml:

android:summary="@string/next_screen_title"

android:title="@string/next_screen_summary" >

android:key="@+id/next_screen_checkbox_preference"

android:summary="@string/checkbox_summary"

android:title="@string/checkbox_title" />

android:summary="@string/category_title">

android:defaultValue="false"

android:key="pref_otificationskey"

android:title="@string/checkbox_title" >

android:entries="@array/people_name"

android:entryValues="@array/people_value"

android:key="pref_SyncFrequencykey"

android:summary="@string/list_summary"

android:title="@string/list_title" >

涉及到的string.xml内容如下:

下一屏选项

下一屏

我很帅

我刷吗?

我喜欢

人名列表

我喜欢的人名

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();

}

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

android 切换 preferencefragment,Android PreferenceActivity与PreferenceFragment详解及简单实例_Android_脚本之家...相关推荐

  1. php小程序地图处理,微信小程序 地图map详解及简单实例

    微信小程序 地图map 微信小程序map 地图属性名类型默认值说明longitudeNumber中心经度 latitudeNumber中心纬度 scaleNumber1缩放级别 markersArra ...

  2. java对文件的操作详解_Java 对 Properties 文件的操作详解及简单实例

    Java 对 Properties 文件的操作详解及简单实例 发布于 2020-8-7| 复制链接 摘记: Java 对 Properties 文件的操作简介在 Java 中,我们常用 java.ut ...

  3. mysql 实例复制_MYSQL教程MySQL 复制详解及简单实例

    <MysqL教程MysqL 复制详解及简单实例>要点: 本文介绍了MysqL教程MysqL 复制详解及简单实例,希望对您有用.如果有疑问,可以联系我们. MysqL 复制详解及简单实例 主 ...

  4. python与golang_Golang与python线程详解及简单实例

    Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...

  5. mysql 实例复制_MySQL 复制详解及简单实例

    MySQL 复制详解及简单实例 主从复制技术在MySQL中被广泛使用,主要用于同步一台服务器上的数据至多台从服务器,可以用于实现负载均衡,高可用和故障切换,以及提供备份等等.MySQL支持多种不同的复 ...

  6. java method 注解_JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...

  7. java file 实例_Java File类的详解及简单实例

    Java File类的详解及简单实例 1. File():构造函数,一般是依据文件所在的指定位置来创建文件对象. CanWrite():返回文件是否可写. CanRead():返回文件是否可读. Co ...

  8. php android 复制粘贴板,Android_Android剪贴板用法详解,本文实例详述了Android剪贴板的 - phpStudy...

    Android剪贴板用法详解 本文实例详述了Android剪贴板的用法,分享给大家供大家参考.具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管 ...

  9. java多线程教程_java 基础教程之多线程详解及简单实例

    java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...

最新文章

  1. LeetCode简单题之整理字符串
  2. 使用YOLOv5模型进行目标检测!
  3. 谈谈你对摩尔定理的理解.摩尔定理当前还是继续有效吗?
  4. 矩阵的三维变换(转)
  5. WebStorm2018配置nodejs
  6. 案例实作图解Asp.Net MVC教程
  7. HTML示例06---段落(原格式标记)
  8. 区块链+”来了,区块链金融将如何颠覆传统金融
  9. android 汉字 转 拼音首字母大写,传入汉字字符串, 返回大写拼音首字母
  10. Aptana Studio3的安装问题
  11. webim--web端即时通讯的实现
  12. 关于Spec的一些理解
  13. qs计算机专业排名2017,2017年qs计算机专业大学排名
  14. ip_forward参数对Linux内核转发影响分析
  15. 51单片机——蜂鸣器的使用
  16. Java中的增强for循环和break continue的使用 以及流程控制训练
  17. 01语言基础-系统模块和文件操作20220428
  18. 【快直播】libLebConnectionSDK
  19. 百度人脸识别模块使用分享
  20. ROS节点无法读入launch参数问题

热门文章

  1. 传统运维团队转型应该注意哪些问题?
  2. angularjs通过ng-change和watch两种方式实现对表单输入改变的监控
  3. emiya-canvas.js 解决ios下拍照倾斜与canvas高清屏下绘图模糊问题
  4. SVG(H5可缩放的矢量图形)
  5. 开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试
  6. CLLocationCoordinate2D 用法 和一个最隐蔽的错误
  7. [文档].艾米电子 - 二进制计数器及其变体,Verilog
  8. 第15章 关于本软件
  9. MySQL 关于毫秒的处理
  10. TypeMock是很不错的模拟测试框架