SharedPreferences存储和提取数据(详细的例子请见上一篇博客)

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>


效果图:


 
存储的目录及文件:
 
 
 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值