安卓开发_数据存储技术_SharedPreferences类
SharedPreferences类 供开发人员保存和获取基本数据类型的键值对。
该类主要用于基本类型,例如:booleans,ints,longs,strings。在应用程序结束后,数据仍旧会保存。
有两种方式可以获得SharedPreferences对象
1、getSharedPreferences(): 如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就是共享文件的名称。
对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象
2、getPreferences(): 如果activity仅需要一个共享文件,则可以使用该方法。因为只有一个共享文件,它并不需要提供名称。
向SharedPreferences类中增加值的方法如下
1、调用SharedPreferences类的edit()方法获得SharedPreferences对象
2、调用诸如putString(),putInt()等方法增加相应类型的值
3、使用commit()方法提交新的值
从SharedPreferences类中读取值时,主要使用该类中定义的getXXX()方法。
下面用一个简单的例子来练习SharedPreferences类的使用
首先看布局文件:
1 <?xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:id="@+id/textView1"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:layout_alignParentLeft="true"
12 android:layout_alignParentTop="true"
13 android:layout_marginLeft="66dp"
14 android:layout_marginTop="64dp"
15 android:text="用户名:" />
16
17 <TextView
18 android:id="@+id/textView2"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 android:layout_alignLeft="@+id/textView1"
22 android:layout_below="@+id/textView1"
23 android:layout_marginTop="32dp"
24 android:text="密码:" />
25
26 <EditText
27 android:id="@+id/editText1"
28 android:layout_width="wrap_content"
29 android:layout_height="wrap_content"
30 android:layout_alignBaseline="@+id/textView1"
31 android:layout_alignBottom="@+id/textView1"
32 android:layout_toRightOf="@+id/textView1"
33 android:ems="10" />
34
35 <EditText
36 android:id="@+id/editText2"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:layout_alignBaseline="@+id/textView2"
40 android:layout_alignBottom="@+id/textView2"
41 android:layout_alignLeft="@+id/editText1"
42 android:ems="10"
43 android:inputType="textPassword" >
44
45 <requestFocus />
46 </EditText>
47
48 <Button
49 android:id="@+id/btn_load"
50 android:layout_width="wrap_content"
51 android:layout_height="wrap_content"
52 android:layout_alignLeft="@+id/editText2"
53 android:layout_below="@+id/editText2"
54 android:layout_marginTop="29dp"
55 android:text="登录" />
56
57 </RelativeLayout>
一个简单的登录界面。
再看JAVA文件
1 package data;
2
3 import com.example.allcode.R;
4
5 import android.app.Activity;
6 import android.content.SharedPreferences;
7 import android.content.SharedPreferences.Editor;
8 import android.os.Bundle;
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.Toast;
14
15 public class Sharedpreference_use extends Activity{
16 private EditText name;
17 private EditText password;
18 private Button load;
19
20 @Override
21 protected void onCreate(Bundle savedInstanceState) {
22 // TODO Auto-generated method stub
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.data_sharedpreferences);
25
26 name = (EditText) findViewById(R.id.editText1);
27 password = (EditText) findViewById(R.id.editText2);
28 load = (Button) findViewById(R.id.btn_load);
29
30 //登录按钮,将用户名和密码存到SharedPreferences对象中存储数据
31 //通过toast显示存储的用户名和密码
32 load.setOnClickListener(new OnClickListener() {
33
34 @Override
35 public void onClick(View v) {
36 // TODO Auto-generated method stub
37 String str_name = name.getText().toString(); //获取用户名编辑框的数据
38 String str_password = password.getText().toString(); //获取密码框中的数据
39
40 //获得私有类型的SharedPreferences
41
42 SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
43 Editor editor = sp.edit(); //获取Editor对象
44 editor.putString("username", str_name); //添加用户名
45 editor.putString("uesrpassword", str_password); //添加密码
46 editor.commit(); //提交数据
47
48 //如果在另一个activity中获取SharedPreferences存储的数据 ,要加上下面这行代码,在同一activity种则不需要
49 //SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
50 String get_name = sp.getString("username","0");
51 String get_password = sp.getString("uesrpassword","1");
52 53 Toast.makeText(Sharedpreference_use.this, "通过SharedPreferences存储的用户名为:"+get_name+"密码为:"+get_password, 1).show();
54 //将获取的用户名和密码的数据通过toast显示出来
55 }
56 });
57
58
59
60 }
61
62 }
效果图:
SharedPreferences类存储的数据放在shared_prefs文件夹中
data/data/包名 找到你的包名 里面有个shared_prefs文件,保存的文件data.xml就是 SharedPreferences类类保存的数据
该数据是以Map键值对的形式存放在xml文件中的
-------------------------------------------------------------------
相关知识:
- js的动态加载、缓存、更新以及复用(四)
- ajax的再次封装!(改进版) —— new与不 new 有啥区别?
- ajax的再次封装!
- 【自然框架】js版的QuickPager分页控件 V2.0
- 你的SQL语句放在了哪里?
- oclhashcat:离线hash密码破解工具官方文档(中文版)
- 如何动态加载js?
- 【自然框架】数据访问之精雕细琢(一)存储过程的参数
- 100w条记录分页,可以有多快?—— DataReader分页与SQL语句分页的对比测试(在线演示)
- Mimikatz小实验:黄金票据+dcsync
- 【自然框架】n级下拉列表框的原理
- 【自然框架】分享 n级联动下拉列表框
- GSM Hacking Part ②:使用SDR捕获GSM网络数据并解密
- 【自然框架】之数据访问 —— 再小的类库也需要设计。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- rabbitpy使用purge不生效
- Springboot读取自定义属性之集合(list,数组)
- 被遗忘的 10 个Linux命令,很实用!
- Nginx配置中一个不起眼字符"/"的巨大作用,失之毫厘谬以千里
- 当一个http请求来临时,SpringMVC究竟偷偷帮你做了什么?SpringMVC视图处理器与视图篇章【终章】
- 求求你,别再开发的时候一用redis分布式锁,就急着去复制粘贴了!lua脚本的实现思路
- 全网最详细的 K8s Service 不能访问排查流程
- 团体程序设计天梯赛-练习集 L1-001 Hello World
- 团体程序设计天梯赛-练习集 L1-002 打印沙漏
- 团体程序设计天梯赛-练习集 L1-003 个位数统计
- 团体程序设计天梯赛-练习集 L1-004 计算摄氏温度
- 团体程序设计天梯赛-练习集 L1-007 念数字
- 团体程序设计天梯赛-练习集 L1-008 求整数段和
- K8s多租户场景下的多层级namespace规则解析
- 团体程序设计天梯赛-练习集 L1-010 比较大小