SharePreferences用法

原创 2015年11月17日 16:35:00
  • 开发应用需要保存一些配置参数,对于Android应用来说,我们最适合采用SharedPreferences保存数据,它是一个轻量级的存储类,特别适合用于保存软件配置参数。

如何使用SharePreferences保存数据

  • 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。例如:
       SharedPreferences sharedPreferences =getSharedPreferences("mltest", Context.MODE_PRIVATE);
      Editor editor = sharedPreferences.edit();//获取编辑器
      editor.putString("name", "四种模式");
      editor.putInt("age", 4);
      editor.commit();//提交修改
  • getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,分别是:

    Context.MODE_PRIVATE = 0
    Context.MODE_APPEND = 32768
    Context.MODE_WORLD_READABLE = 1
    Context.MODE_WORLD_WRITEABLE = 2

  • 解析:

    1. Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
    2. Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
    3. Context.MODE_WORLD_READABLEContext.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
    4. MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
    5. MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。`

如何使用SharePreferences读取数据

SharedPreferences sharedPreferences = getSharedPreferences("ljq", Context.MODE_PRIVATE);
//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);

举例

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
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="@string/name"
            android:textSize="20px"
            android:id="@+id/nameLable" />
        <EditText android:layout_width="80px"
            android:layout_height="wrap_content" 
            android:layout_toRightOf="@id/nameLable"
            android:layout_alignTop="@id/nameLable"
            android:layout_marginLeft="10px"
            android:id="@+id/name" />
    </RelativeLayout>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:textSize="20px"
            android:text="@string/age"
            android:id="@+id/ageLable" />
        <EditText android:layout_width="80px"
            android:layout_height="wrap_content" 
            android:layout_toRightOf="@id/ageLable"
            android:layout_alignTop="@id/ageLable"
            android:layout_marginLeft="10px"
            android:id="@+id/age" />
    </RelativeLayout>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="@string/button"
            android:id="@+id/button" />
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="@string/showButton"
            android:layout_toRightOf="@id/button"
            android:layout_alignTop="@id/button"
            android:id="@+id/showButton" />
    </RelativeLayout>
    <TextView android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:textSize="20px"
            android:id="@+id/showText" />
</LinearLayout>

.Java文件

package com.ljq.activity;

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.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SpActivity extends Activity {
    private EditText nameText;
    private EditText ageText;
    private TextView resultText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        nameText = (EditText)this.findViewById(R.id.name);
        ageText = (EditText)this.findViewById(R.id.age);
        resultText = (TextView)this.findViewById(R.id.showText);

        Button button = (Button)this.findViewById(R.id.button);
        Button showButton = (Button)this.findViewById(R.id.showButton);
        button.setOnClickListener(listener);
        showButton.setOnClickListener(listener);

        // 回显
        SharedPreferences sharedPreferences=getSharedPreferences("ljq123", 
                Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
        String nameValue = sharedPreferences.getString("name", "");
        int ageValue = sharedPreferences.getInt("age", 1);
        nameText.setText(nameValue);
        ageText.setText(String.valueOf(ageValue));
    }

    private View.OnClickListener listener = new View.OnClickListener(){
        public void onClick(View v) {
            Button button = (Button)v;
            //ljq123文件存放在/data/data/<package name>/shared_prefs目录下
            SharedPreferences sharedPreferences=getSharedPreferences("ljq123", 
                    Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
            switch (button.getId()) {
            case R.id.button:
                String name = nameText.getText().toString();
                int age = Integer.parseInt(ageText.getText().toString());
                Editor editor = sharedPreferences.edit(); //获取编辑器
                editor.putString("name", name);
                editor.putInt("age", age);
                editor.commit();//提交修改
                Toast.makeText(SpActivity.this, "保存成功", Toast.LENGTH_LONG).show();
                break;
            case R.id.showButton:
                String nameValue = sharedPreferences.getString("name", "");
                int ageValue = sharedPreferences.getInt("age", 1);
                resultText.setText("姓名:" + nameValue + ",年龄:" + ageValue);
                break;
            }
        }
    };
}

结果
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载,更多文章请继续关注Carson_Ho的博客!

关于sharePreferences的用法。。。。

1.首先是有Context的情况。 在/data/data//shared_pref/目录下创建一个以name命名的xml文件,mode文件为模式存储偏好 public cla...
  • S__zO
  • S__zO
  • 2015年07月26日 19:49
  • 329

SharePreferences的用法

SharePreferences可以提供共享的数据,包括程序内部共享的数据和程序之间共享数据。 SharePreferences实际上是在android的data/data/程序包名/shared_...
  • u014681854
  • u014681854
  • 2015年05月29日 16:22
  • 161

sharepreferences

1,sharepreferences在程序中创建一个xml SharedPreferences myshareperferemces=getSharedPreferences("yuhan", Ac...
  • u014492513
  • u014492513
  • 2016年05月19日 17:41
  • 220

SharePreferences

这里我有借鉴其他的大牛,不过还是有我自己的东西。下面介绍一下
  • kluing
  • kluing
  • 2014年05月31日 23:40
  • 495

Android数据存储之SharePreferences的使用总结

SharedPreferences类供开发人员保存和获取基本数据类型的键值对.该类主要用于基本类型, 例如boolean,float.int,long和string.  SharedPreferenc...
  • wenzhi20102321
  • wenzhi20102321
  • 2016年11月07日 13:06
  • 1823

Android的SharedPreferences的使用介绍

Android的SharedPreferences的使用介绍 一、SharedPreferences的简介 SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储ke...
  • stop_pig
  • stop_pig
  • 2014年09月09日 16:09
  • 6392

Android fragment 使用Sharepreferences来获取值,更新界面

如果有看过我前面几篇博文的都知道,这个项目里面采用的是fragment片段对每个界面进行组织的,当用户切换fragment A时,就隐藏该fragment,当再次回到这个fragment A时,就将该...
  • omayyouhappy
  • omayyouhappy
  • 2015年09月29日 16:04
  • 1211

sharePreferences

sharePreferences数据存储 //本质是用XML存放键值对,该类对存放过程进行包装简便了使用 //使用SharePreferences,创建对象,通过上下文对象获取对应的sharePre...
  • u011374875
  • u011374875
  • 2015年01月08日 11:15
  • 376

Sharepreferences

SharePreferences类它是一个轻量级的存储类,特别适合用于保存软件配置参数。 SharePreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//sh...
  • lzl370515231
  • lzl370515231
  • 2015年12月06日 20:44
  • 128

SharedPreferences的用法以及详解

用了很多次的SharedPreferences,这次来好好总结一下SharePreferences的用法以及需要了解的知识。主要是写给我第一位粉丝看的。希望以后的粉丝越来越多,我也更加有动力写更多更好...
  • MR_Condingson
  • MR_Condingson
  • 2017年02月28日 10:03
  • 2355
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SharePreferences用法
举报原因:
原因补充:

(最多只允许输入30个字)