Android学习10

SharedPreferences

今天练习了利用SharedPreferences保存登录用户名密码;

layout布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp">

    <EditText
        android:id="@+id/et_user"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="15sp"
        android:textColor="#FF8F44"
        android:background="@drawable/bg_username"
        android:hint="用户名"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"/>

    <EditText
        android:id="@+id/et_password"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="15sp"
        android:textColor="#FF8F44"
        android:layout_below="@id/et_user"
        android:background="@drawable/bg_username"
        android:hint="密码"
        android:inputType="textPassword"
        android:layout_marginTop="15dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"/>

    <CheckBox
        android:id="@+id/cb_pwd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="记住密码"
        android:checked="false"
        android:layout_below="@+id/et_password"
        android:layout_marginLeft="46dp"
        android:layout_marginTop="20dp"/>

    <CheckBox
        android:id="@+id/cb_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="自动登录"
        android:layout_marginLeft="237dp"
        android:layout_marginTop="20dp"
        android:layout_below="@+id/et_password"/>

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@id/cb_login"
        android:layout_marginTop="20dp"
        android:background="@drawable/bg_btn4"
        android:text="登录"
        android:textSize="20sp"
        android:textColor="#fff"/>


</RelativeLayout>
View Code

activity:

package com.example.helloworld.datastorage;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

import com.example.helloworld.R;

public class SpLoginActivity extends AppCompatActivity {

    private EditText mEtUser;
    private EditText mEtPassword;
    private Button mBtnlogin;
    private CheckBox mCbremember, mCbautomatic;
    private SharedPreferences mSharedPreferences;
    private SharedPreferences.Editor mEditor;

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

        mEtUser = findViewById(R.id.et_user);
        mEtPassword = findViewById(R.id.et_password);
        mBtnlogin = findViewById(R.id.btn_login);
        mCbremember = findViewById(R.id.cb_pwd);
        mCbautomatic = findViewById(R.id.cb_login);

        //获得mSharedPreferences的实例
        mSharedPreferences = getSharedPreferences("logindata", MODE_PRIVATE);
        //获取一个Edit对象,所有对数据的操作都需要经过Edit
        mEditor = mSharedPreferences.edit();
        //从SharedPreferences中取出记住密码的状态值
        boolean isremember = mSharedPreferences.getBoolean("isremember", false);

        //判断状态值
        if (isremember) {
            //取出账号密码
            String names = mSharedPreferences.getString("name", null);
            String passs = mSharedPreferences.getString("pass", null);
            //设置复选框的状态是勾选的状态
            mCbremember.setChecked(true);
            mEtUser.setText(names);
            mEtPassword.setText(passs);
        }

        //取出自动登录的状态值
        boolean isautomatic = mSharedPreferences.getBoolean("isautomatic", false);
        if (isautomatic) {
            //跳转
            Toast.makeText(this, "登陆成功", Toast.LENGTH_LONG).show();
        }

        //对登录按钮添加监听
        mBtnlogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断记住密码的复选框是否勾选如果勾选就在SharedPreferences中存入账号片密码,状态值
                if (mCbremember.isChecked()) {
                    mEditor.putString("name", mEtUser.getText().toString());//获取EditText里的文本内容
                    mEditor.putString("password",mEtPassword.getText().toString());
                    //存入状态值,(代表如果已经勾选了,那么就存一个true,的值)
                    mEditor.putBoolean("isremember", true);
                    mEditor.commit();
                }

                //自动登录
                if (mCbautomatic.isChecked()) {
                    //当勾选了自动登录 存一个为true的状态值
                    mEditor.putBoolean("isautomatic", true);
                    mEditor.commit();
                }

                //跳转
                Toast.makeText(SpLoginActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();

            }
        });
    }

}
View Code

原文地址:https://www.cnblogs.com/xjmm/p/12291681.html