Android  PreferenceActivity与PreferenceFragment详解及简单实例

所属分类: 软件编程 / Android 阅读数: 27
收藏 0 赞 0 分享

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

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

更多精彩内容其他人还在看

Android设计登录界面、找回密码、注册功能

这篇文章主要为大家详细介绍了Android设计登录界面的方法,Android实现找回密码、注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android通过手势实现答题器翻页效果

这篇文章主要为大家详细介绍了Android通过手势实现答题器翻页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android采用双缓冲技术实现画板

这篇文章主要为大家详细介绍了Android采用双缓冲技术实现画板的相关资料,思路清晰,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android开发之毛玻璃效果实例代码

这篇文章主要给大家分享android开发之毛玻璃效果的实例代码,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

Android实现桌面悬浮窗、蒙板效果实例代码

这篇文章主要介绍了Android实现桌面悬浮窗、蒙板效果实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

深入解读Android的Volley库的功能结构

这篇文章主要介绍了Android的Volley开发框架的功能结构,Volley是Android开发中网络部分的一大利器,包含很多HTTP协议通信的相关操作,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发中使用Volley库发送HTTP请求的实例教程

这篇文章主要介绍了Android开发中使用Volley库发送HTTP请求的实例教程,包括创建Volley单例的基本知识与取消Request请求的技巧等,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿QQ聊天撒花特效 很真实

本文写的这个特效,是关于聊天的,你肯定遇到过,就是你跟人家聊天的时候,比如发送应(么么哒),然后屏幕上全部就是表情了,今天我们就是做这个,撒花的特效,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android的HTTP操作库Volley的基本使用教程

这篇文章主要介绍了Android的HTTP操作库Volley的基本使用教程,包括JSON请求与图片加载等用法的实例,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿水波纹流量球进度条控制器

这篇文章主要介绍了Android仿水波纹流量球进度条控制器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多