`
haierboos
  • 浏览: 438836 次
文章分类
社区版块
存档分类
最新评论

android之知识点小结二

 
阅读更多
SharedPreferences的使用:

在这里也是偏向于使用android自带的SharedPreferences管理机制,简要说明使用流程,备忘:

首先在主activity里面初始化SharedPreferences,

SharedPreferences prefs=null;
...
@Override
 public void onCreate(Bundle savedInstanceState) {
...
prefs=PreferenceManager.getDefaultSharedPreferences(this);
...
/*注册SharedPreferences的监听器,一旦SharedPreferences发生变化,则触发监听器,进行一些操作,比如这里是通过SharedPreferences设置列表的排序方式,一旦排序方式的设置改变,则*SharedPreferences的存储内容改变,则触发监听器,进行列表的重新初始化
*/
prefs.registerOnSharedPreferenceChangeListener(prefListener);
...
}
.
.
.
private SharedPreferences.OnSharedPreferenceChangeListener prefListener=
  new SharedPreferences.OnSharedPreferenceChangeListener() {
  public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) {
   if (key.equals("sort_order")) {//这里就是监听器的具体操作,通过判断是某一个SharedPreferences的变化,进行相应操作
    initList();//重新初始化列表
   }
  }
 };.
.
private void initList() {
...
model=helper.getAll(where, prefs.getString("sort_order", "name"));
//在这里需要通过prefs.getString("sort_order", "name")获取SharedPreferences中存取的具体内容,即采取何种排列方式,如果结果为空,则返回"name",按姓名排序
...
}

上面则完成了对SharedPreferences的一系列操作,从初始化和注册监听器,监听变化,以及变化后做出相应操作,

那么是如何唤出SharedPreferences的设置界面,并且存储是如何实现的呢,
这里采用的是

  if (item.getItemId()==R.id.prefs) {
   startActivity(new Intent(this, EditPreferences.class));
  }

就是在菜单里加一个prefs设置选项,点击它则启动定义的SharedPreferences设置界面,这个界面就直接继承PreferenceActivity,可以方便高效的实现Preference的存储和管理.代码如下:

public class EditPreferences extends PreferenceActivity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preferences);//这个方法的实现就内置了SharedPreferences的存储方法,所以无需我们自己再去存储SharedPreferences
	}
}

代码是很简单的,只需要addPreferencesFromResource(R.xml.preferences);这个设置显示界面就可以了,

界面代码res/xml/preferences.xml:

<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
	<ListPreference
		android:key="sort_order"
		android:title="Sort Order"
		android:summary="Choose the order the list uses"
		android:entries="@array/sort_names"
		android:entryValues="@array/sort_clauses"
		android:dialogTitle="Choose a sort order" />
</PreferenceScreen>

整个界面是一个PreferenceScreen,第二行,是一个ListPreference,key就相当于id,也是键值对的key,实际存储之后就是一个键值对的键,在前面的initList里面

model=helper.getAll(where, prefs.getString("sort_order", "name"));

我们就是用prefs.getString("sort_order","name");去获取内容的,很明显这里用到的就是key,

title就是ListPreference的标题,summary是简单说明用法,效果如下,显示位置很明显就体会到其用途了.

再有就是所显示的具体内容了,ListPreference里的选项是从哪里来的呢,来自

android:entries="@array/sort_names"

这个数组定义了要显示的内容,而下一行

android:entryValues="@array/sort_clauses"

这行定义了对应着你所选的选项,存储到SharedPreferences里面的内容,整个数组的资源代码如下

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string-array name="sort_names">
		<item>By Name, Ascending</item>
		<item>By Name, Descending</item>
		<item>By Type</item>
		<item>By Address, Ascending</item>
		<item>By Address, Descending</item>
	</string-array>
	<string-array name="sort_clauses">
		<item>name ASC</item>
		<item>name DESC</item>
		<item>type, name ASC</item>
		<item>address ASC</item>
		<item>address DESC</item>
	</string-array>
</resources>

比如我们在选择时,选择了第一个By Name, Ascending,那么系统自动帮你把name ASC存储到SharedPreferences里面,即

所存储的这条SharedPreferences为(SharedPreferences的存储方式就是xml文件的形式存储)

<stringname="sort_order">name ASC</string>

那么在看前面的这行代码

model=helper.getAll(where, prefs.getString("sort_order", "name"));

很明显,这个prefs所获取到的内容就是"name ASC",这行代码其实就是把参数传递到数据库帮助类里用来获取内容,而这个获取到的SharedPreferences就是设置的排序方式

分享到:
评论

相关推荐

    安卓知识小结第一章

    对Android中部分知识点的记录和汇总,大多是面试中的主要知识点

    Android开发案例驱动教程 配套代码

    采用案例驱动模式展开讲解知识点,即介绍案例-&gt;案例涉及技术-&gt;展开知识点-&gt;总结的方式 本书作者从事多年一线开发和培训,讲解知识点力求细致,深入浅出 目 录 前言 第1章 Android操作系统概述 1 1.1 Android...

    Android应用开发揭秘pdf高清版

    最重要的是还全面介绍了如何利用原生的C,C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为...

    精通ANDROID 3(中文版)1/2

    1.8 小结  第2章 设置开发环境  2.1 设置环境  2.1.1 下载JDK 6  2.1.2 下载Eclipse 3.6  2.1.3 下载Android SDK  2.1.4 命令行窗口  2.1.5 安装ADT  2.2 了解基本组件  2.2.1 View  2.2.2 ...

    《深度理解Android:第一卷》

    针对性强,注重实际应用开发需求,书中所涵盖的知识点都是Android应用开发者和系统开发者需要重点掌握的。 目录 第1章 阅读前的准备工作 / 1 1.1 系统架构 / 2 1.1.1 Android系统架构 / 2 1.1.2 本书的架构 / 3...

    《Google Android开发入门与实战》.pdf

    本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等的...

    疯狂Android讲义源码

     1.7 本章小结 33  第2章 Android应用的界面编程 35  2.1 界面编程与视图(View)组件 36  2.1.1 视图组件与容器组件 36  2.1.2 使用XML布局文件控制UI  界面 40  2.1.3 在代码中控制UI界面 41  2.1.4 使用...

    精通Android 3 (中文版)2/2

    1.8 小结  第2章 设置开发环境  2.1 设置环境  2.1.1 下载JDK 6  2.1.2 下载Eclipse 3.6  2.1.3 下载Android SDK  2.1.4 命令行窗口  2.1.5 安装ADT  2.2 了解基本组件  2.2.1 View  2.2.2 ...

    Android 4游戏编程入门经典

     1.10 小结 第2章 从android sdk开始  2.1 搭建开发环境  2.1.1 安装jdk  2.1.2 安装android sdk  2.1.3 安装eclipse  2.1.4 安装adt eclipse插件  2.1.5 eclipse快速浏览  2.1.6 一些实用的eclipse快捷键 ...

    Google.Android开发入门与实战

    《Android开发入门与实战》注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小...

    深入理解Android:卷I--详细书签版

    针对性强,注重实际应用开发需求,书中所涵盖的知识点都是android应用开发者和系统开发者需要重点掌握的。  全书共10章,第1章介绍了阅读本书所需要做的准备工作,主要包括对android系统架构和源码阅读方法的介绍;...

    疯狂Android讲义.part2

    第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 ...19.10 本章小结 689

    Android 横竖屏处理的知识小结

    这里对如何在 App 中控制界面的旋转方向做一个小结。 界面旋转方向的决定因素 决定一个界面显示为横屏/竖屏的因素有几个: 系统的设置项,一般可以设置为只允许竖屏或可旋转切换。 设备的物理传感器感应到的设备...

    android游戏编程入门

     1.10 小结 18  第2章 从Android SDK开始 19  2.1 搭建开发环境 19  2.1.1 安装JDK 20  2.1.2 安装Android SDK 20  2.1.3 安装Eclipse 21  2.1.4 安装ADT Eclipse插件 22  2.1.5 Eclipse快速浏览 23  2.1.6...

    Android课程设计---基于Android系统的音乐播放器设计与实现.doc

    课程设计报告书 课程名称: 操作系统原理 题 目: 基于Android系统的音乐播放器设计与实现 2012 年 7 月... 对于刚接触Android开发的我们,在很多的知识点上还是不是很理解,鉴于此在制作 的过程难免会遇到各种问题,解

    疯狂Android讲义.part1

    第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 ...19.10 本章小结 689

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    第2章 游戏开发相关android基础知识 23 2.1 游戏中的音效 23 2.1.1 游戏中的即时音效 23 2.1.2 即时音效的一个案例 24 2.1.3 背景音乐播放技术 27 2.1.4 简易音乐播放器的实现 29 2.2 简单数据的...

    《深入理解Android》卷Ⅱ

    1.3 本章小结 第2章 深入理解Java Binder和MessageQueue 2.1 概述 2.2 Java层中的Binder架构分析 2.2.1 Binder架构总览 2.2.2 初始化Java层Binder框架 2.2.3 addService实例分析 2.2.4 Java层Binder架构...

Global site tag (gtag.js) - Google Analytics