zoukankan      html  css  js  c++  java
  • 第二阶段冲刺(三)

    昨天学习了sharedpreference的相关用法

    遇到的困难是:在sharepreference中存储数据不熟练

    今天准备继续学习如何实现自动登录功能

    package com.example.a002034.autologindemo;
     
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.Window;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.CompoundButton;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.Toast;
     
    /**
     * @author 002034
     */
    public class LoginActivity extends AppCompatActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
        private static final String TAG = "LoginActivity";
        private EditText mUserName, mPassword;
        private CheckBox mCbPwd, mCbAutoLogin;
        private Button mBtnLogin;
        private ImageButton mBtnQuit;
        private String mUserNameValue, mPasswordValue;
        private SharedPreferences sp;
     
        @SuppressLint("WorldReadableFiles")
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            //去除标题
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_login);
     
            //获得实例对象
            sp = this.getSharedPreferences("userInfo", Context.MODE_WORLD_READABLE);
            mUserName = findViewById(R.id.et_zh);
            mPassword = findViewById(R.id.et_mima);
     
            mCbPwd = findViewById(R.id.cb_mima);
            mCbAutoLogin = findViewById(R.id.cb_auto);
     
            mCbPwd.setOnCheckedChangeListener(this);
            mCbAutoLogin.setOnCheckedChangeListener(this);
     
            mBtnLogin = findViewById(R.id.btn_login);
            mBtnQuit = findViewById(R.id.img_btn);
     
            mBtnLogin.setOnClickListener(this);
            mBtnQuit.setOnClickListener(this);
     
            //检查初始状态
            checkInitStatus(sp);
        }
     
        /**
         * 检查记住密码.
         */
        private void checkRemPwd() {
            if (mCbPwd.isChecked()) {
                Log.i(TAG, "checkRemPwd:记住密码已选中 ");
                sp.edit().putBoolean("ISCHECK", true).apply();
            } else {
                Log.i(TAG, "checkRemPwd: 记住密码没有选中");
                sp.edit().putBoolean("ISCHECK", false).apply();
            }
        }
     
        /**
         * 初始检查记住密码状态以及是否设置自动登录.
         */
        private void checkInitStatus(SharedPreferences sp) {
            if (sp.getBoolean("ISCHECK", false)) {
                //设置默认是记录密码状态
                mCbPwd.setChecked(true);
                mUserName.setText(sp.getString("USER_NAME", ""));
                mPassword.setText(sp.getString("PASSWORD", ""));
                //判断自动登陆多选框状态
                if (sp.getBoolean("AUTO_ISCHECK", false)) {
                    //设置默认是自动登录状态
                    mCbAutoLogin.setChecked(true);
                    //跳转界面
                    Intent intent = new Intent(LoginActivity.this, LogoActivity.class);
                    LoginActivity.this.startActivity(intent);
                }
            }
        }
     
        /**
         * 登录.
         */
        private void login() {
            mUserNameValue = mUserName.getText().toString();
            mPasswordValue = mPassword.getText().toString();
     
            if ("xzy".equals(mUserNameValue) && "123".equals(mPasswordValue)) {
                Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                //登录成功和记住密码框为选中状态才保存用户信息
                if (mCbPwd.isChecked()) {
                    //记住用户名、密码、
                    SharedPreferences.Editor editor = sp.edit();
                    editor.putString("USER_NAME", mUserNameValue);
                    editor.putString("PASSWORD", mPasswordValue);
                    editor.apply();
                }
                //跳转界面
                Intent intent = new Intent(LoginActivity.this, LogoActivity.class);
                LoginActivity.this.startActivity(intent);
            } else {
     
                Toast.makeText(LoginActivity.this, "用户名或密码错误,请重新登录", Toast.LENGTH_LONG).show();
            }
        }
     
        /**
         * 检查自动登录.
         */
        private void checkAutoLogin() {
            if (mCbAutoLogin.isChecked()) {
                System.out.println("自动登录已选中");
                sp.edit().putBoolean("AUTO_ISCHECK", true).apply();
     
            } else {
                System.out.println("自动登录没有选中");
                sp.edit().putBoolean("AUTO_ISCHECK", false).apply();
            }
        }
     
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.img_btn:
                    finish();
                    break;
                // 登录监听事件  现在默认为用户名为:xzy 密码:123
                case R.id.btn_login:
                    login();
                    break;
                default:
                    break;
            }
        }
     
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (buttonView.getId()) {
                //监听自动登录多选框事件
                case R.id.cb_auto:
                    checkAutoLogin();
                    break;
                //监听记住密码
                case R.id.cb_mima:
                    checkRemPwd();
                    break;
                default:
                    break;
            }
        }
    }
  • 相关阅读:
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    魔改合成大西瓜
    自定义注解!绝对是程序员装逼的利器!!
    Python中的join()函数的用法
    Python中的split()函数的用法
    linux 完全卸载mysql数据库
    域名被盗后还能不能找回
    在选择域名后缀时应该考虑到的问题
    什么叫域名劫持 和域名解析有什么区别
    河北重大技术需求系统04
  • 原文地址:https://www.cnblogs.com/lq13035130506/p/11003005.html
Copyright © 2011-2022 走看看