`
minghaitang
  • 浏览: 129056 次
社区版块
存档分类
最新评论

Android(三) 数据存储之二 SharedPreferences

阅读更多

在此之前的学习内容是数据存储之一文件存储。在本地存储中常用的有,文件、配置文件、数据库。前面的学习主要是针对本地文件的。我认为可以把SharedPreferences看做是配置文件,虽然它也是采用XML格式存储的。

 

       比如我们使用的桌面软件中,通常会有一个选项菜单,选项是对软件的常规或核心设置。在Android中我们使用SharedPreferences来完成这种对配置文件的读写。在JavaSEJavaEE中常用的是*.properties,在Windows平台下常使用*.ini文件。

 

       下面,我们编写一个使用SharedPreferences读写配置文件的小例子。

 

       1.创建Android工程

       Project name:AndroidSharedPreferences

       BuildTarget:Android2.1

       Application name:Android 应用程序配置

       Package name:com.changcheng.sharedpreferences

       Create Activity:AndroidSharedPreferences

       Min SDK Version:7

 

       2.编辑strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, AndroidSharedPreferences!</string>

    <string name="app_name">Android 应用程序配置</string>

    <string name="tv_name">姓名</string>

    <string name="tv_age">年龄</string>

    <string name="bt_write">设置</string>

    <string name="bt_read">读取</string>

    <string name="save_success">保存成功</string>

    <string name="save_failed">保存失败</string>

</resources>

 

       3.编辑main.xml

<?xml version="1.0" encoding="utf-8"?>

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

         android:orientation="vertical" android:layout_width="fill_parent"

         android:layout_height="fill_parent">

         <!-- 姓名 -->

         <RelativeLayout android:layout_width="fill_parent"

                   android:layout_height="wrap_content">

                   <TextView android:layout_width="70dip" android:layout_height="wrap_content"

                            android:textSize="25dip" android:id="@+id/tv_name" android:text="@string/tv_name" />

                   <EditText android:layout_width="300dip"

                            android:layout_height="wrap_content" android:layout_toRightOf="@id/tv_name"

                            android:id="@+id/et_name" />

         </RelativeLayout>

         <!-- 年龄 -->

         <RelativeLayout android:layout_width="fill_parent"

                   android:layout_height="wrap_content">

                   <TextView android:layout_width="70dip" android:layout_height="wrap_content"

                            android:textSize="25dip" android:id="@+id/tv_age" android:text="@string/tv_age" />

                   <EditText android:layout_width="300dip"

                            android:layout_height="wrap_content" android:layout_toRightOf="@id/tv_age"

                            android:id="@+id/et_age" />

         </RelativeLayout>

         <!-- 按钮 -->

         <RelativeLayout android:layout_width="fill_parent"

                   android:layout_height="wrap_content" android:gravity="right">

                   <Button android:layout_width="wrap_content"

                            android:layout_height="wrap_content" android:text="@string/bt_write"

                            android:id="@+id/bt_set" />

                   <Button android:layout_width="wrap_content"

                            android:layout_height="wrap_content" android:layout_toRightOf="@id/bt_set"

                            android:text="@string/bt_read" android:id="@+id/et_read" />

         </RelativeLayout>

</LinearLayout>

 

       4.为按钮添加事件代码

package com.changcheng.sharedpreferences;

 

import android.app.Activity;

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

 

public class AndroidSharedPreferences extends Activity {

 

         private static final String TAG = "AndroidSharedPreferences";

         private EditText etName;

         private EditText etAge;

 

         /** Called when the activity is first created. */

         @Override

         public void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.main);

                   // 获取按钮

                   Button btSet = (Button) this.findViewById(R.id.bt_set);

                   Button btRead = (Button) this.findViewById(R.id.bt_read);

                   // 获取编辑框

                   etName = (EditText) this.findViewById(R.id.et_name);

                   etAge = (EditText) this.findViewById(R.id.et_age);

                   // 添加事件

                   btSet.setOnClickListener(new OnClickListener() {

                            @Override

                            public void onClick(View v) {

                                     // 获取名称和年龄

                                     String name = etName.getText().toString();

                                     String age = etAge.getText().toString();

                                     // 创建SharedPreferences

                                     SharedPreferences sp = getSharedPreferences("preferences",

                                                        Context.MODE_PRIVATE);

                                     // 添加数据

                                     Editor editor = sp.edit();

                                     editor.putString("name", name);

                                     editor.putInt("age", Integer.parseInt(age));

                                     // 保存数据

                                     if (editor.commit())

                                               Toast.makeText(AndroidSharedPreferences.this,

                                                                 R.string.save_success, 1).show();

                                     else

                                               Toast.makeText(AndroidSharedPreferences.this,

                                                                 R.string.save_failed, 1).show();

                            }

                   });

                   btRead.setOnClickListener(new OnClickListener() {

                            @Override

                            public void onClick(View v) {

                                     // 创建SharedPreferences

                                     SharedPreferences sp = getSharedPreferences("preferences",

                                                        Context.MODE_PRIVATE);

                                     // 获取数据

                                     String name = sp.getString("name", "defName");

                                     String age = sp.getInt("age", 0) + "";

                                     // 显示数据

                                     etName.setText(name);

                                     etAge.setText(age);

                            }

                   });

         }

}

 

       5.运行程序

       启动模拟器,运行程序。输入名称和年龄,点击保存。我们使用的代码是getSharedPreferences("preferences",Context.MODE_PRIVATE);,当然commit时。它会为我们为”/data/data/com.changcheng.sharedpreferences/shared_prefs/preferences.xml”。将 preferences.xml导出,查看它的内容为:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

<string name="name">长城</string>

<int name="age" value="25" />

</map>


      
将名称和年龄编辑框的内容清空,然后点击读取按钮,刚才写出的内容被读取进来。 SharedPreferences的使用就是这么简单。

 

       6.其他程序访问本程序的配置

       通过SharedPreferences创建的配置文件,不需要指定路径和文件后缀名,读取的时候也是。通常情况下,配置只是提供给本应用程序使用的。在这里我们介绍一个小知识点,即其他程序想使用本应用程序的配置,那应该如何使用SharedPreferences呢?如下:

Context otherAppContext = createPackageContext("com.changcheng.sharedpreferences", Context.CONTEXT_IGNORE_SECURITY);

SharedPreferences sharedPreferences = otherAppContext.getSharedPreferences("preferences", Context.MODE_WORLD_READABLE);

 

       注意,为了使其他程序可以访问本应用程序的配置。那么在我们使用 getSharedPreferences创建配置的时候必须为它的文件访问模式设置为允许其他程序读取或写入等。

 

分享到:
评论

相关推荐

    Android 3种数据保存(SharedPreferences存储 内部文件存储 数据库存储)

    本教程将详细介绍Android中的三种主要数据存储方式:SharedPreferences存储、内部文件存储以及数据库存储。 1. SharedPreferences存储 SharedPreferences是Android提供的一种轻量级的数据存储方式,用于保存应用...

    Android数据存储--SharedPreferences存储

    SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储少量简单的键值对数据,如配置设置、用户偏好等。在本篇博文中,我们将深入探讨如何使用SharedPreferences进行数据存储,并通过源码分析其...

    Android数据持久化之二:SharedPreferences 存储

    Android 系统中主要提供了三种方式用于实现数据持久化功能,分别是: 1、文件存储 2、SharedPreference 存储 3、数据库存储。SharedPreferences 是使用键值对的方式来存储数据的,使用 SharedPreferences来进行数据...

    Android数据存储之SharedPreferences

    SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储简单的小型数据,如偏好设置、用户选项等。在本项目中,开发者已经根据官方文档编写了关于SharedPreferences的代码示例,你可以通过下载来...

    Android中DataStore替代SharedPreferences

    Android开发者们长期以来一直依赖SharedPreferences作为轻量级的数据存储解决方案,它的简单易用性使其在小规模数据存储方面受到了广泛欢迎。然而,随着应用程序复杂性的增加,SharedPreferences的局限性逐渐暴露...

    android 数据存储之SharedPreferences

    在本项目"android 数据存储之SharedPreferences"中,我们将深入探讨如何使用SharedPreferences来实现数据的持久化。 SharedPreferences的工作原理是基于XML文件,这些文件存放在设备的内部存储区,通常位于`data/...

    Android开发:Android Studio:数据存储方式:SharedPreferences与SQLite数据库.pdf

    Android开发:Android Studio:数据存储方式:SharedPreferences与SQLite数据库.pdf

    SharedPreferences文件在不同应用之间数据共享

    SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序的简单配置信息,如布尔值、整型、浮点型、字符串等基本类型及其数组。通常,SharedPreferences数据是私有的,即每个应用只能...

    android SharedPreferences小例子

    在Android开发中,SharedPreferences是一个轻量级的数据存储机制,用于保存和读取少量的基本数据类型,如字符串、整型、布尔值等。它非常适合用来存储应用程序的配置信息或用户偏好设置,因为这些数据通常不需要复杂...

    Android开发之数据存储的四种方式之SharedPreferences

    Android项目开发中使用的数据存储方式有:网络存储、sqlite存储、File存储和SharedPreferences存储,四种存储方式对应的Demo别人是NetworkDemo、SqliteDemo、FileDemo和SharedPreferencesDemo,根据应用的场景选择...

    Android数据存储——SharedPreferences(登入记住密码)

    SharedPreferences是Android提供的一种简单的数据存储机制,它可以保存基本类型的数据,如布尔值、整型、浮点型、字符串以及字符串集合。这些数据会被保存在XML文件中,并在系统中全局可访问。SharedPreferences支持...

    Android项目设计与开发:SharedPreferences.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SharedPreferences 2 SharedPreferences 键值对概念: 某一个数据都由一个键和一个值构成,键代表数据的名称,它是全局唯一的。具体的数据内容存放在值中。 键值对...

    数据存储之SharedPreferences存储

    前面呢,我们讲了文件的存储,文件的存储方式不适合保存一些比较复杂的文本数据。因此,我们来学习一下...SharedPreferences支持不同类型的数据存储,如果你存储的是整型,那你读取出来的也是整型,你存储的是浮点型,

    Sharedpreferences存储数据的使用方法_完整Demo_AndroidStudio

    在Android应用开发中,数据存储是一项基础且重要的任务。Shared Preferences是Android提供的一种轻量级的数据存储机制,常用于保存应用程序中的配置设置或简单的键值对数据。它以XML格式存储,适合保存少量非结构化...

    android 使用SharedPreferences对数据存储/删除/读取/文件删除

    在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储应用程序的配置信息或者简单数据。它提供了一种键值对的方式,使得数据的存储、删除和读取变得非常方便。下面我们将...

    Android使用SharedPreferences进行数据存储,缓存ID等数据

    在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储机制,主要用于存储应用程序的配置信息或者临时数据,如用户偏好设置、登录状态等。它提供了简单键值对的存储方式,非常适合用来缓存像...

    Android应用源码之SharedPreferences.zip

    在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储机制,用于存储应用程序的简单配置数据,如用户设置、应用的状态信息等。这个压缩包“Android应用源码之SharedPreferences.zip”很可能...

    Android之SharedPreferences数据保存

    SharedPreferences是Android系统提供的一种轻量级的数据存储方式,用于存储简单的键值对数据,如布尔值、整型、浮点型、字符串等。本资源将通过一个具体的例子来介绍如何使用SharedPreferences进行数据保存。 ...

    Android本地存储SharedPreferences详解

    Android本地存储SharedPreferences详解 存储位置 SharedPreferences数据保存在: /data /data/&lt;package&gt; /shared_prefs 文件夹下,以XML格式保存,根元素为:。文件名称为获取SharedPreferences实例时传递的參数值。...

    Android使用SharedPreferences和SQLite数据库实现数据存储

    本文将详细探讨如何使用SharedPreferences和SQLite数据库这两种常见的Android数据存储机制。 首先,我们来看SharedPreferences。SharedPreferences提供了一种轻量级的数据存储方式,适用于保存简单的键值对数据,如...

Global site tag (gtag.js) - Google Analytics