SharedPreferences

SharedPreferences是什么

SharedPreferences是Android平台上的一个轻量级的存储类,用来存储少量数据时简单,便捷。

如何存储数据与读取数据

首先要创建SharedPreferences和SharedPreferences.Editor对象
SharedPreferences sp = getSharedPreferences("everydayData", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();

再通过editor调用put方法

editor.putString("json", s);

最后用Editor对象的commit提交

editor.commit();

记住密码与自动登录案例

完整代码展示:

public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText number, psw;
    private CheckBox jzmm, zddl;
    private Button login_btn;
    private SharedPreferences sp;
    private SharedPreferences.Editor editor;
    private ProgressDialog progressDialog;
    private static boolean flag = true;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Intent intent = new Intent(LoginActivity.this, ContactsActivity.class);
            startActivity(intent);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        bindId();
        sp = getSharedPreferences("login", MODE_PRIVATE);
        editor = sp.edit();

        if (sp.getBoolean("jzmm", false)) {
            number.setText(sp.getString("number", ""));
            psw.setText(sp.getString("psw", ""));
            jzmm.setChecked(true);      //将记住密码的勾选状态设定为true
        }
        //读取数据,判断上次登录是否勾选了自动登录
        if (sp.getBoolean("zddl", false)) {
            zddl.setChecked(true);
            //判断是否同时勾选了记住密码和自动登录,如果是,则调用myDialog()方法进行登录
            if (sp.getBoolean("zddl", false) && sp.getBoolean("jzmm", false)) {
                myDialog();
            }
        }

    }

    private void myDialog() {
        //设置一个进度条
        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("正在登录");
        progressDialog.setCancelable(true);
        //当点击取消后,flag = false
        progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                flag = false;
            }
        });
        //启动进度条
        progressDialog.show();
        //开启一个子线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //延迟3s
                    Thread.sleep(3000);
                    //判断flag,是否点击过进度条的取消,如果没有,3s后跳转页面
                    if (flag)
                        handler.sendEmptyMessage(0);
                    //清除进度条
                    progressDialog.dismiss();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void bindId() {
        number = findViewById(R.id.number);
        psw = findViewById(R.id.psw);
        jzmm = findViewById(R.id.jzmm);
        zddl = findViewById(R.id.zddl);
        login_btn = findViewById(R.id.login);
        login_btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.login:
                //勾选了记住密码就将账号密码还有勾选状态保存
                if (jzmm.isChecked()) {
                    editor.putString("number", number.getText().toString());
                    editor.putString("psw", number.getText().toString());
                    editor.putBoolean("jzmm", true);
                } else
                    editor.putBoolean("jzmm", false);       //如果没有勾选,则勾选状态为false
                //判断自动登录是否勾选了
                if (zddl.isChecked())
                    editor.putBoolean("zddl", true);
                else
                    editor.putBoolean("zddl", false);
                editor.commit();    //提交数据
                flag = true;
                myDialog();
                break;
            default:
                break;
        }
    }
}

需要注意的点:

判断记住密码是否勾选

if (checkBox1.isChecked()) {
                        editor.putBoolean("flag", true);
                    } else {
                        editor.putBoolean("flag", false);
                    }
                    editor.putString("id", numET.getText() + "");
                    editor.putString("password", pwdET.getText() + "");
                    editor.commit();

勾选了,就读取账号密码,否则就不记住






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值