
关于SP存储的介绍,请点这里
做一个这样的记住密码、自动登录案例
一 步骤1 布局
2 MainActivity.java
初始化页面时,判断 记住密码 和 自动登录 打钩没,存储相应数据到SP
第2次第n次打开的时候,从SP取数据,看上次是否 勾选了记住密码和自动登录,如果勾选了,就回显数据
1 布局
2 MainActivity.java
package com.example.mydatastroe;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity2 extends AppCompatActivity {
private SharedPreferences sp;
private EditText username;
private EditText password;
private CheckBox ck_remember;
private CheckBox ck_autoLogin;
private Button btn_regist;
private Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//获取sp
sp = getSharedPreferences("qingConfig", Context.MODE_PRIVATE);
initView();
//第2次或第n次打开的时候,从SP获取之前保存的数据,进行画面同步
boolean remeberPwd = sp.getBoolean("remeberPwd",false);//如果获取值是空,就会返回默认值 false
boolean autoLogin = sp.getBoolean("autoLogin",false);//如果获取值是空,就会返回默认值 false
//上次选择记住密码了
if(remeberPwd){
//回显数据
username.setText(sp.getString("name",""));
password.setText(sp.getString("pwd",""));
ck_remember.setChecked(true); //记住密码 打上勾
}
//上次选择 自动登录了
if(autoLogin){
ck_autoLogin.setChecked(true); //自动登录 打上勾
//模拟登录
Toast.makeText(this,"自动登录成功了",Toast.LENGTH_SHORT).show();
}
}
//初始化
private void initView() {
//找到控件
username = findViewById(R.id.username);
password = findViewById(R.id.password);
ck_remember = findViewById(R.id.ck_remember);
ck_autoLogin = findViewById(R.id.ck_autoLogin);
btn_regist = findViewById(R.id.btn_regist);
btn_login = findViewById(R.id.btn_login);
//设置监听
MyOnClickListener l =new MyOnClickListener();
btn_regist.setOnClickListener(l);
btn_login.setOnClickListener(l);
}
private class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_regist:
break;
case R.id.btn_login:
//登录
String name =username.getText().toString().trim();
String pwd =password.getText().toString().trim();
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){
Toast.makeText(MainActivity2.this,"用户名或密码不能为空",Toast.LENGTH_SHORT).show();
}else{
//记住密码打钩没
if(ck_remember.isChecked()){
//用户名和密码都要保存,同时 记住密码的状态也要保存
SharedPreferences.Editor editor = sp.edit();
editor.putString("name",name);
editor.putString("pwd",pwd);
editor.putBoolean("remeberPwd",true); //记住密码的状态 保存
editor.apply();
}
//自动登录打钩没
if(ck_autoLogin.isChecked()){
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("autoLogin",true); //自动登录的状态 保存
editor.apply();
}
}
break;
}
}
}
}
效果
把应用关掉
再次打开应用