PreferenceFragment 使用 小结

Perference也就是我们常说的偏好设置,首选项设置,能够自己主动保存一些数据,比如我们在上一次使用的时候的一些内容,则在下一次启动后依旧生效,而不须要再进行配置。当用户改变设置时,系统就会更新SharedPreference文件里相应的值。perference使用键值对的方式来处理,在android3.0之前,我们一般去继承Preference这个基类,去给用户呈现一个能够设置的界面,当中的layout须要自己编写,而在3.0之后,使用的是碎片技术的首选项配置方法,即
使用PreferenceFragement来实现。

+++++++++++++++++++++++++++++++++++=

为了从一个XML文件里获取界面,使用addPreferenceFromResource(int)方法。根元素应该使用PreferenceScreen,在层次结构中随后的PreferenceScreen将导致屏幕切割处。

为了指定一个意图来查询都带有各自首选项的activitiy,使用addPreferenceFromIntent方法。每一个activity能够在manifest文件里指定meta-data来指向一个XML文件资源。这些资源文件将被填充到单独的首选项层次结构而且通过这个fragment来展示。

为了指定一个以PreferenceScreen为根元素的对象,使用setPreferenceScreen(PreferenceScreen)方法。

+++++++++++++++++++++++

方便起见,这个fragment实现了一个用于当前层次结构中随意首选项的点击事件监听器,

onPreferenceTreeClick(PreferenceScreen,Preference).

----------------------------------------------------------------------------------------------------------------------------------------

使用PreferenceFragment 的一个样例,效果与之前使用继承PreferenceActivity差点儿相同,过程例如以下:

1.创建一个project,在MainAcitivity中 加入菜单button 及 相应效果

------------------------------  cut here  -----------------------------------

package com.example.fragementexam;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.app.Activity;

import android.content.Intent;

public class MainActivity extends Activity {

private static final int menu_setting = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// TODO Auto-generated method stub

menu.add(0,menu_setting,1,"设置").setIcon(android.R.drawable.ic_menu_preferences);

return super.onCreateOptionsMenu(menu);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// TODO Auto-generated method stub

super.onOptionsItemSelected(item);

Intent intent = new Intent(this, FragmentPreferences.class);

startActivity(intent);

return false;

}

}

------------------------------  cut here  -----------------------------------

2.在res目录以下新建一个xml目录,在里面新建一个preferences.xml文件

------------------------------  cut here  -----------------------------------

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

<PreferenceCategory android:title="In-line preferences" >

<CheckBoxPreference

android:key="checkbox_preference"

android:summary="这是一个复选框"

android:title="复选框设置" />

</PreferenceCategory>

<PreferenceCategory android:title="Dialog-based preferences" >

<EditTextPreference

android:dialogTitle="请输入你最喜欢的种族"

android:key="edittext_preference"

android:summary="一个使用了编辑文本对话框的样例"

android:title="请输入你最喜欢的种族" />

<ListPreference

android:dialogTitle="请选择一项"

android:entries="@array/cities"

android:entryValues="@array/airport_codes"

android:key="list_preferenc"

android:summary="一个使用了列表对话框的样例"

android:title="请选择一项" />

</PreferenceCategory>

<PreferenceCategory android:title="Launch preferences" >

<!-- This PreferenceScreen tag serves as a screen break (similar to page break in word processing). Like for other preference types, we assign a key here so it is able to save and restore its instance state. -->

<PreferenceScreen

android:key="screen_preference"

android:summary="展示还有一个首选项配置页面"

android:title="页面首选项" >

<!-- 你能够在这里放置很多其它的首选项内容,将被在下一个页面呈现出来 -->

<CheckBoxPreference

android:key="next_screen_checkbox_preference"

android:summary="在还有一个页面展示但出于同一个层级的首选项配置"

android:title="复选框设置" />

</PreferenceScreen>

<PreferenceScreen

android:summary="从一个意图中启动一个activity"

android:title="意图首选项" >

<intent

android:action="android.intent.action.VIEW"

android:data="http://www.baidu.com" />

</PreferenceScreen>

</PreferenceCategory>

<PreferenceCategory android:title="Preference attributes" >

<CheckBoxPreference

android:key="parent_checkbox_preference"

android:summary="这是一个可见的父类"

android:title="父类复选框首选项" />

<!-- 子类的可见类型是由样式属性定义的 -->

<CheckBoxPreference

android:dependency="parent_checkbox_preference"

android:key="child_checkbox_preference"

android:layout="?android:attr/preferenceLayoutChild"

android:summary="这是一个可见的子类"

android:title="子类复选框首选项" />

</PreferenceCategory>

</PreferenceScreen>

------------------------------  cut here  -----------------------------------

3、FragmentPreferences.java的代码部分

------------------------------  cut here  -----------------------------------

package com.example.fragementexam;

import android.app.Activity;

import android.os.Bundle;

import android.preference.PreferenceFragment;

public class FragmentPreferences extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

            getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragement()).commit();  

}

public static class PrefsFragement extends PreferenceFragment{

@Override

public void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preferences);

}

}

}

------------------------------  cut here  -----------------------------------

大致对PreferenceFragment的学习使用就是这样,以后在高版本号上面开发的时候能够考虑这样的方式

时间: 2024-11-05 22:10:16

PreferenceFragment 使用 小结的相关文章

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

【转载】小结一下linux 2.6内核的四种IO调度算法

在LINUX 2.6中,有四种关于IO的调度算法,下面综合小结一下: 1) NOOP NOOP算法的全写为No Operation.该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作.之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求.NOOP假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样).在有些SAN环境下,这个选择可能是最好选择.Noop 对于 IO

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

安卓小结《1》

Activity的生命周期和启动模式的知识点小结: 1.如果Activity切换的时候,新Activity是透明,旧的不会走onStop方法. 2.新的Activity切换的时候,旧Activity  会先执行,onpause,然后才会启动新的activity. 3. Activity在异常情况下被回收时,onSaveInstanceState方法会被回调,回调时机是在onStop之前,当Activity被重新创建的时 候,onRestoreInstanceState方法会被回调,时序在onSt

date命令小结

在写linux shell脚本时,date是经常要用到的一个命令,这篇文章就此做个小结,以防自己用到时到处找 1.最基本的,显示当前的具体时期:直接敲入 date即可,如下, [email protected]:~/scripts$ date 2015年 01月 03日 星期六 21:46:49 CST 2.显示某个文件上次修改的时间:date -r file [email protected]:~/scripts$ date -r save.sh 2015年 01月 02日 星期五 23:29

java 小结2 多态问题。

面向对象这个东西,其实我们一直是不是都没有感觉到自己在用,以后我一定要用用.以前学c#时候认真的看过一次,最近一直研究java.随便再看看. 多态问题: 在java中多态分为(1)编译时多态和(2)运行时多态 (1)编译时多态比较容易理解:其实就是通过方法重载,就是方法的重载,同一个函数名但是可以参数不一样.这就是重载(so easy) (2)运行时多态:这个是通过方法覆盖实现的,就是子类在继承父类的时候,通过对某个方法的重写,覆盖父类方法. 简单的说:比如我们有个父类A,子类B通过Extend

php操作xml小结

<?php #php操作xml,SimpleXMLElement类小结 header('Content-type:text/html;charset=utf-8;'); //1.构造函数 /* $xmlstring=<<<XML <?xml version="1.0" encoding="utf-8"?> <note  xmlns:b="http://www.w3school.com.cn/example/&quo

网络安全解决之个人小结

方案分为安全技术部分和安全管理部分. 安全技术部分: 1.物理安全 需要建设独立的计算机机房,满足防水.防火.防静电等要求.机房设置门禁和视频监控. 2.网络安全 采用防火墙进行安全区域分割,把公司网络分为服务器区和办公区.设置不同的安全规则以防范黑客攻击.采用上网行为管理产品对网络行为和流量进行管控. 3.系统安全 采用终端安全管理系统,对客户端进行管控,重点管控网络行为.补丁升级和软件分发等.对服务器进行安全加固,保障服务器安全. 4.应用安全 对Web电子商务服务器进行漏洞扫描和加固,防范