SharedPreferences存储是什么?
- SharedPreferences是Android平台上一个轻量级的存诸类,用来存储少量数据时简单、便捷(如:保存记住密码状态,设置开关状态等)。
- 以key-values( 键值对)形式存储数据,可以存储的数据类型为:String,float,int,long,boolean。
- 存储位置在/data/data/<包名>/sharedprefs目录下。
- 保存的数据以XML形式存储。
SharedPreferences怎么用?
获取SharedPreferences对象
获取Editor对象
通过Editor对象的putXXX函数,设置写入数据;(XXX是类型)
通过Editor对象的commit提交写入。
使用SharedPreferences保存用户名和密码
代码展示:
package com.example.abc.app2;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText edi;//用户名EditText
private EditText edi1;//密码EditText
private CheckBox checkBox;//单选框
private Button btn;//登录
private int Remember;//定义一个int类型的变量
private String password;//全局的密码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindID();
SharedPreferences sharedPreferences = getSharedPreferences("mysp.xml", MODE_PRIVATE);
//从sp文件(mysp.xml)里取出对应的值
if (sharedPreferences != null) {//判断文件是否存在
String name = sharedPreferences.getString("name", "");//取出用户名
password = sharedPreferences.getString("password", "");//取出密码(全局密码方便其他地方用)
Remember = sharedPreferences.getInt("check", 0);//取出单选框给的是什么值
//第一个参数相当于暗号,第二个参数默认值相当于初始值
edi.setText(name);//把name取出的值赋给用户名
}
if (Remember == 1) {//如果单选框中的值为1是
checkBox.setChecked(true);//单选框默认选中
edi1.setText(password);//把password取出的值赋给密码
}
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = edi.getText().toString();//接收用户名EditText内容
password = edi1.getText().toString();//接收密码EditText内容
SharedPreferences sp = getSharedPreferences("mysp.xml", MODE_PRIVATE);
//创建SharedPreferences对象
SharedPreferences.Editor editor = sp.edit();
//创建Editor对象写入值
editor.putString("name", name);//保存用户名
editor.putString("password", password);//保存密码
if (checkBox.isChecked()) {//判断单选框是否被点击
Remember = 1;//设值为1(暗号)
editor.putInt("check", Remember);
} else {
Remember = 0;//没点击则值设为0
editor.putInt("check", Remember);
}
editor.commit();//提交
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}
});
}
private void bindID() {//绑定ID
edi = findViewById(R.id.main_edi);
edi1 = findViewById(R.id.main_edi1);
checkBox = findViewById(R.id.main_rab);
btn = findViewById(R.id.main_btn);
}
}