Android  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"?>                            

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

<?xml version="1.0" encoding="utf-8"?>  下一屏选项  下一屏  我很帅  我刷吗?  我喜欢  人名列表  我喜欢的人名

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

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

更多相关文章

  1. 移动网站开发中常用的10段JavaScript代码
  2. Android已有项目接入Flutter及互相通信
  3. 36个Android开发常用经典代码大全
  4. Android(安卓)高通代码预制apk可卸载,恢复出厂设置apk可恢复 Andr
  5. 【Android学习笔记】AutoCompleteTextView(数组在代码中)
  6. Android与H5互调
  7. Android(安卓)systemserver 解析
  8. android 开发中判断网络是否连接的代码
  9. 成为更好的Android开发者前,我们需要注意的31个细节

随机推荐

  1. MySQL 5.7.19安装目录下创建my.ini文件的
  2. windows server2016安装MySQL5.7.19解压
  3. Mysql 5.7.19 免安装版遇到的坑(收藏)
  4. Mysql 5.7.19 免安装版配置方法教程详解(
  5. 关于mysql查询字符集不匹配问题的解决方
  6. Mysql数据库绿色版安装教程 解决系统错误
  7. sqlite迁移到mysql脚本的方法
  8. mysql分页时offset过大的Sql优化经验分享
  9. MySQL5.7.18主从复制搭建(一主一从)教程
  10. Mysql5.7.18的安装与主从复制图文详解