SharedPreferences存储和提取数据(详细的例子请见上一篇博客)
2017-02-20 10:34
447 查看
SharedPreferences存储和提取数据的轻量级的存储接口,但是只能存储五种数据类型的内容,但是日常使用足够了。
保存在/data/data/<包名>/shared_prefs
读取SharedPreferences数据:
//第一个参数为文件名,即我们的通过SharedPreference创建的文件名;第二个参数为挂载模式,一般都设置为私有模式,或者追加模式(MODE_APPEND),MODE_PRIVATE模式下文件的内容是覆盖的,而MODE_APPEND模式下文件的内容是追加的,即内容一直在后面加,而不是覆盖同名的键名内容
SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);
//第一个参数为键名,是我们存入数据的键名;第二个参数为缺省值,当我们给的键名不存在时就给这个,一般为空字符串就行。
sp.getString(" "," ");
方 法
说 明
long getLong(String key, long defValue)
读取长整型数据
int getInt(String key, int defValue)
读取整型数据
float getFloat(String key, float defValue)
读取浮点类型数据
boolean getBoolean(String key, boolean defValue)
读取布尔类型数据
String getString(String key, String defValue)
读取字符串类型数据
向SharedPreferences中写入数据:
SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);
//我们需要通过sp来获取编辑对象
Editor editor = sp.edit();
//通过editor对象的putString方法来写入对应类型的内容,第一个参数是键名,第二个参数为要写入的内容(第一个参数键名为唯一标识,不可重复,在MODE_PRIVATE模式下重复了即是覆盖原有的内容)
editor.putString(" "," ");
方 法
说 明
putLong(String key, long value)
写入长整型数据
putInt(String key, int value)
写入整型数据
putFloat(String key, float value)
写入浮点类型数据
putBoolean(String key, boolean value)
写入布尔类型数据
putString(String key,String value)
写入字符串类型数据
基本代码如下:
MainActivity.java
activity_main.xml
效果图:
![](https://img-blog.csdn.net/20170220103701050?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl4aWFuZ19Z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
存储的目录及文件:
![](https://img-blog.csdn.net/20170220103902159?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl4aWFuZ19Z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170220103922288?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl4aWFuZ19Z/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
保存在/data/data/<包名>/shared_prefs
读取SharedPreferences数据:
//第一个参数为文件名,即我们的通过SharedPreference创建的文件名;第二个参数为挂载模式,一般都设置为私有模式,或者追加模式(MODE_APPEND),MODE_PRIVATE模式下文件的内容是覆盖的,而MODE_APPEND模式下文件的内容是追加的,即内容一直在后面加,而不是覆盖同名的键名内容
SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);
//第一个参数为键名,是我们存入数据的键名;第二个参数为缺省值,当我们给的键名不存在时就给这个,一般为空字符串就行。
sp.getString(" "," ");
方 法
说 明
long getLong(String key, long defValue)
读取长整型数据
int getInt(String key, int defValue)
读取整型数据
float getFloat(String key, float defValue)
读取浮点类型数据
boolean getBoolean(String key, boolean defValue)
读取布尔类型数据
String getString(String key, String defValue)
读取字符串类型数据
向SharedPreferences中写入数据:
SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);
//我们需要通过sp来获取编辑对象
Editor editor = sp.edit();
//通过editor对象的putString方法来写入对应类型的内容,第一个参数是键名,第二个参数为要写入的内容(第一个参数键名为唯一标识,不可重复,在MODE_PRIVATE模式下重复了即是覆盖原有的内容)
editor.putString(" "," ");
方 法
说 明
putLong(String key, long value)
写入长整型数据
putInt(String key, int value)
写入整型数据
putFloat(String key, float value)
写入浮点类型数据
putBoolean(String key, boolean value)
写入布尔类型数据
putString(String key,String value)
写入字符串类型数据
基本代码如下:
MainActivity.java
package com.zhiyuan3g.sharedpreferences; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText editText; private EditText editText2; private Button button; private Button button2; private SharedPreferences mSharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { editText = (EditText) findViewById(R.id.editText); editText2 = (EditText) findViewById(R.id.editText2); button = (Button) findViewById(R.id.button); button2 = (Button) findViewById(R.id.button2); button.setOnClickListener(this); button2.setOnClickListener(this); } @Override public void onClick(View v) { String editTextString = editText.getText().toString(); String editText2String = editText2.getText().toString(); if (!submit()){ switch (v.getId()) { case R.id.button: //先创建文件 //获取SharedPreferences对象,传入两个参数:第一个为文件名,第二个为模式,此处使用私有模式 mSharedPreferences = getSharedPreferences("zhiyuan", MODE_PRIVATE); //获取editor编辑器 SharedPreferences.Editor editor = mSharedPreferences.edit(); //通过编辑器存放数据,传入两个参数:第一个为键名,第二个为键值 editor.putString("username",editTextString); editor.putString("password",editText2String); //提交数据,切记!!! editor.commit(); Toast.makeText(getApplicationContext(), "注册成功", Toast.LENGTH_SHORT).show(); break; case R.id.button2: //通过mSharedPreferences对象获取以前存放的数据,传入两个参数:第一个为键名,第二个为缺省值 String username = mSharedPreferences.getString("username", ""); String password = mSharedPreferences.getString("password", ""); //通过比较来做出相应的操作 if (username.equals(editTextString) && password.equals(editText2String)) { Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(getApplicationContext(), "用户名或密码不正确", Toast.LENGTH_SHORT).show(); } break; } } } private boolean submit() { // validate String editTextString = editText.getText().toString().trim(); if (TextUtils.isEmpty(editTextString)) { Toast.makeText(this, "editTextString不能为空", Toast.LENGTH_SHORT).show(); return true; } String editText2String = editText2.getText().toString().trim(); if (TextUtils.isEmpty(editText2String)) { Toast.makeText(this, "editText2String不能为空", Toast.LENGTH_SHORT).show(); return true; } return false; } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.zhiyuan3g.sharedpreferences.MainActivity"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:maxLines="1" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText2" android:singleLine="true" android:layout_below="@+id/editText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignRight="@+id/editText" android:layout_alignEnd="@+id/editText"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" android:id="@+id/button" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" android:id="@+id/button2" android:layout_alignBottom="@+id/button" android:layout_alignParentRight="true" android:layout_alignParentEnd="true"/> </RelativeLayout>
效果图:
存储的目录及文件:
相关文章推荐
- oracle blob数据类型存储读取的小例子
- xml存储数据的简单例子,php&xml留言板
- 插入数据的存储过程的经典例子
- 使用JQuery EasyUI 中的DataGrid控件实现数据的分页(紧密结合上一篇博客)
- 黑马程序员——IOS学习九:ios开发之数据的持久化存储机制——黑马 ios 技术博客
- 数据存储详细文档
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 自己写的一个使用jdbc prepare存储数据的例子
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
- xml存储数据的简单例子,php&xml留言板
- GridView用编辑或详细链接提取选中行数据
- GridView用编辑或详细链接提取选中行数据
- 用xls导入数据(报错) (上一篇博客)原因
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 传智博客佟老师jqurey学习笔记,以及例子代码详细注释。
- 接上一篇,一个XML格式数据转换为图表的例子。
- 用SharedPreferences存储数据,一个最简单的例子
- 数据结构之图的邻接表存储(参考C博客—研究毛)
- 使用fscanf()提取txt中一定格式的数据例子
- 数据提取 “1,123,123,52” 这种信息存储方式的分离