您的位置:首页 > Web前端

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

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>


效果图:



 

存储的目录及文件:


 



 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: