栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

day 2 记住密码功能(登陆界面)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

day 2 记住密码功能(登陆界面)

Android记住密码功能

使用checkbox 控件去实现记住密码,通过对checkbox 的监听保存用户的账号和密码,保存前先判断账号和密码是否为空为空则不保存

利用SP保存用户的账号和密码,通过对账号和密码的判断可以确定用户能不能进入下个界面

在OnCreate中通过对sp保存的checkbox 数据读取来判断密码是否重写到控价上

困惑解决
  1. 在kotlin中申明全局变量?

我在代码编写过程中一个空间就要赋值好几次,太过于繁琐我们可以采用延迟实例化方法来实现

   private lateinit var checkBox: CheckBox
   private lateinit var password: EditText
   private lateinit var account: EditText
   private lateinit var account_num: String
   private lateinit var password_num: String

延迟初始化不是代表不初始化,后续代码在使用相关变量前一定要先初始化,没有初始化直接引用会造成空指针

  1. 空指针
    在kotlin中空指针已经在预编译环节处理了一次,还会出现此现象就是我们自己在代码环节出了问题,如:延时初始化

  2. kotlin的语法糖引起的问题
    我们熟知在kotlin中我们的get…可以直接省略get,这不代表set…可以省略set

  3. 逻辑问题
    我们要切实思考好事件触发的逻辑,尽量写好部分功能就测试下可以更好的排除问题
    深刻理解四大组件的生命周期回调的意义

代码
package com.xuchi.login

import android.content.Intent
import android.content.SharedPreferences
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.CheckBox
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.alertDialog

class LoginActivity : AppCompatActivity() {

    private lateinit var checkBox: CheckBox
    private lateinit var password: EditText
    private lateinit var account: EditText
    private lateinit var account_num: String
    private lateinit var password_num: String


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)

        account = findViewById(R.id.et_name)
        password = findViewById(R.id.et_pass)
        checkBox = findViewById(R.id.cb)




        val sp = getSharedPreferences("Account", 0)
        checkBox.isChecked = sp.getBoolean("checkBox", false)
        if (checkBox.isChecked) {
            account.setText(sp.getString("account_num", " "))
            password.setText(sp.getString("password_num", " "))
        }

    }

    fun onClick(view: android.view.View) {


        account_num=account.text.toString().trim() ?: "uu"
        password_num=password.text.toString().trim() ?: "uu"

        if (account_num.isEmpty() || password_num.isEmpty()) {
            Toast.makeText(
                this,
                "账号或密码为空",
                Toast.LENGTH_SHORT
            ).show()

        }else if (account_num == "你爸爸" && password_num == "0819") {
            val intent = Intent(this, ContentActivity::class.java)
            startActivity(intent)
        } else {
            val alertDialog = alertDialog.Builder(this)
            alertDialog.apply {
                setTitle("提示")
                setMessage("姓名,誓言")
                setNegativeButton("取消", null)
                setPositiveButton("确认", null)
            }.show()
        }


    }

    override fun onResume() {
        super.onResume()
        checkBox.setonClickListener {

            val sharedPreferences=getSharedPreferences("Account",0).edit()
            account_num=account.text.toString().trim() ?: ""
            password_num=password.text.toString().trim() ?: ""

            if (checkBox.isChecked&&!account_num.isEmpty()&&!password_num.isEmpty()){
                sharedPreferences.apply{
                    putBoolean("checkBox",true)
                    putString("account_num",account_num)
                    putString("password_num",password_num)
                }.commit()
            }else{
                sharedPreferences.apply{
                    putBoolean("checkBox",false)
                }.commit()
            }
            Log.d("setOnClickListener","setOnClickListener")
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号