见归档项目:SharedPreferencesDemo.zip

1、对于数据量较小,且有明显的K-V形式的数据而言,适合用SharedPreferences保存。SharedPreferences的数据以xml文件的形式保存在/data/data/包名/SharedPreferences的目录下,如下例:

  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
  2. <map>
  3. <string name="hi3">liaoliuqing</string>
  4. <string name="hi">liaoliuqing</string>
  5. <string name="name">liaoliuqing</string>
  6. </map>

2、写入SharedPreferences数据的基本步骤

(1)获取SharedPreferences实例

(2)通过SharedPreferences的实例获取Editor实例。注:SharedPreferences本身并没有提供写入数据的能力,而是通过其内部类SharedPreferences.Editor来实现。

(3)调用Editor的write方法,切记后面还要commit。

3、读取SharedPreferences数据的基本步骤

(1)获取SharedPreferences实例

(2)读取单一数据:调用SharedPreferences的getXxx()方法,分别读取String,int,long等类型。

(3)读取全量数据:调用SharedPreferences的getAll()方法,再遍历map。

实例:

图形界面如下

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. android:paddingBottom="@dimen/activity_vertical_margin"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. tools:context=".MainActivity" >
  11.  
  12. <EditText
  13. android:id="@+id/et_key"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:inputType="text"
  17. android:hint="@string/key" />
  18.  
  19. <EditText
  20. android:id="@+id/et_value"
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:inputType="text"
  24. android:hint="@string/value" />
  25.  
  26. <Button
  27. android:id="@+id/bt_write"
  28. android:layout_width="wrap_content"
  29. android:layout_height="wrap_content"
  30. android:text="@string/write" />
  31.  
  32. <Button
  33. android:id="@+id/bt_read"
  34. android:layout_width="wrap_content"
  35. android:layout_height="wrap_content"
  36. android:text="@string/read" />
  37.  
  38. <TextView
  39. android:id="@+id/tv_content"
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:text="@string/hello_world" />
  43.  
  44. </LinearLayout>
  1. package com.ljh.sharepreferencedemo;
  2.  
  3. import java.util.Map;
  4. import java.util.Map.Entry;
  5.  
  6. import android.os.Bundle;
  7. import android.app.Activity;
  8. import android.content.SharedPreferences;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.TextView;
  14.  
  15. public class MainActivity extends Activity {
  16.  
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21.  
  22. final EditText etKey = (EditText) findViewById(R.id.et_key);
  23. final EditText etValue = (EditText) findViewById(R.id.et_value);
  24. Button btRead = (Button) findViewById(R.id.bt_read);
  25. Button btWrite = (Button) findViewById(R.id.bt_write);
  26. final TextView tvContent = (TextView) findViewById(R.id.tv_content);
  27.  
  28. //1、获取SharedPreferences对象。SharedPreferences是一个接口,程序无法直接创建SharedPreferences对象,只能通过Context提供的getSharedPreferences()方法。
  29. final SharedPreferences preference = getSharedPreferences("test", MODE_PRIVATE);
  30.  
  31. //2、获取SharedPreferences。Editor对象,用于写数据。本步骤只对写数据有必要。
  32. final SharedPreferences.Editor editor = preference.edit();
  33.  
  34. btWrite.setOnClickListener(new OnClickListener(){
  35.  
  36. @Override
  37. public void onClick(View v) {
  38. String key = etKey.getText().toString().trim();
  39. String value = etValue.getText().toString().trim();
  40. //3、写入数据并commit。
  41. editor.putString(key, value);
  42. editor.commit();
  43. }
  44.  
  45. });
  46.  
  47. btRead.setOnClickListener(new OnClickListener(){
  48.  
  49. @Override
  50. public void onClick(View v) {
  51. //2、根据key值读取单一数据
  52. /* String content = preference.getString("name", "lujinhong");
  53. tvContent.setText(content);*/
  54. //2、读取所有数据
  55. String content = "";
  56. Map<String, ?> allContent = preference.getAll();
  57. //注意遍历map的方法
  58. for(Map.Entry<String, ?> entry : allContent.entrySet()){
  59. content+=(entry.getKey()+entry.getValue());
  60. }
  61. tvContent.setText(content);
  62.  
  63. }
  64.  
  65. });
  66.  
  67. }
  68.  
  69. }

SharedPreferences基础的更多相关文章

  1. SharedPreferences基础 分类: H1_ANDROID 2013-11-04 22:35 2559人阅读 评论(0) 收藏

    见归档项目:SharedPreferencesDemo.zip 1.对于数据量较小,且有明显的K-V形式的数据而言,适合用SharedPreferences保存.SharedPreferences的数 ...

  2. Android开发之数据存储——SharedPreferences基础知识详解,饿补学会基本知识,开发者必会它的用法。

    一.数据存储选项:Data Storage --Storage Options[重点] 1.Shared Preferences Store private primitive data in key ...

  3. Android应用开发基础篇(9)-----SharedPreferences

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/27/2370319.html 一.概述 对于SharedPreferences,我吧它理解为一种 ...

  4. <Android基础> (六) 数据存储 Part 2 SharedPreferences方式

    6.3 SharedPreferences存储 SharedPreferences使用键值对的方式来存储数据.同时支持多种不同的数据类型. 6.3.1 将数据存储到SharedPreferences中 ...

  5. android基础知识:SharedPreferences和PreferenceActivity

    1.android文件存储 对Android系统了解的都知道,Android系统有四种基本的数据保存方法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvi ...

  6. SharedPreferences具体解释(一)——基础知识

    我们在开发软件的时候,常须要向用户提供软件參数设置功能,比如我们经常使用的微信,用户能够设置是否同意陌生人加入自己为好友.对于软件配置參数的保存,假设是在window下通常我们会採用ini文件进行保存 ...

  7. android基础---->SharedPreferences的使用

    SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串.这样你应该就能明显地感觉到 ...

  8. Android SharedPreferences公共类sharedhelper

    SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 sharedpreference ...

  9. Android数据存储之SharedPreferences及如何安全存储

    前言: 最近一直在学习ios的数据存储,当学习到NSUserDefaults的时候让我回想起了SharedPreferences,今天闲来无事,想着总结一下SharedPreferences的使用. ...

随机推荐

  1. [uva11916] Emoogle Grid (离散对数)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud  Emoogle Grid  You have to color an MxN ( ...

  2. 使用Promise规定来处理ajax请求的结果

    ajax()返回结果是成功的,调用done()中的回调函数: 失败则调用fail()中的回调函数; always()的回调函数不管成功是否都会调用: 可以是使用then()函数代替done()和fai ...

  3. ArtTemplate 使用笔记

    新一代 javascript 模板引擎:artTemplate-3.0 下载地址:https://github.com/aui/artTemplate 快速上手请参考:https://github.c ...

  4. 三维地图(BFS)

    亡命逃窜 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的娃 ...

  5. 居然因为交换错了好几把。。。。,还有坑点是num1可以大于num2

    完数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  6. SED&AWK

    SED   1.sed是流编辑器(stream editor)缩写,作用主要是文本替换 命令格式:sed ‘s/pattern/replace_string/' file或者cat file | se ...

  7. Mysql bigint 类型转为datetime

    最近在使用quartz,在mysql中其数据库表中的时间都是使用bigint类型存储的,要想使其查询结果显示为yyyy-mm-dd hh:MM:ss的格式需要使用 from_unixtime()函数, ...

  8. 【原创整理,基于JavaScript的创建对象方式的集锦】

    以下4种方式,是我在项目中最常见的JavaScript的面向对象的方式的开发. 测试一般在微软的工具:http://www.typescriptlang.org/Playground 进行测试,或者使 ...

  9. 文档生成工具doxygen+图像生成工具GraphViz

    文档生成工具doxygen+图像生成工具GraphViz 虽然jdk自带的javadoc也很好用,不过使用doxygen+GraphViz 的组合可以生成许多强大的图(类图.协作图.文件包含/被包含图 ...

  10. linux下mysql数据库的操作

    本文主要针对linux下mysql数据库的安装,以及数据库的创建和简单的数据库操作进行说明. ①.Mysql数据库的安装: 数据库的安装分为源码安装和rpm安装. 当然对于老手来说需要进行一些自定义的 ...