首页 > 解决方案 > 登录屏幕上的 EditText 验证

问题描述

我已经有这个问题几个小时了。我有一个简单的登录页面,但我想让用户输入一些内容,而不仅仅是单击登录按钮。

我在下面粘贴了我的代码

username_register是个editText

login_buttonbutton用来登录的

谢谢!

class FinanceLogin : AppCompatActivity () {


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

        login_button.setOnClickListener{}
    }
    private fun validate() :Boolean {
        if (username_register.text.toString().isEmpty()) {
            username_register.error = "Name cannot be blank"
            return false
        } else if (password_register.text.toString().isEmpty()) {
            password_register.error = "Please enter your password"
            return false
        }
        return true
    }
    override fun onClick(v: View?){
    when(v?.id){
        R.id.login_button->{
            if (validate()){
                Toast.makeText(applicationContext,"Done",Toast.LENGTH_LONG).show()
            }
        }

    }}
}

标签: androidkotlin

解决方案


我猜你的问题是因为如果你的情况下的条件只会执行两者之一,这就是它导致问题的原因,你需要做的是自己验证每一个,你可以尝试以下代码:

 // Function to validate Username

 private Boolean validateUsername(){
    if(username_register.text.toString().isEmpty()){
         username_register.error = "Name cannot be blank"
         return false 
     } else { 
         return true 
    }

  }

   // Function to validate Username

   private Boolean validatePassword(){
      if(password_register.text.toString().isEmpty()){
           password_register.error = "Please enter your password"
           return false 
       } else { 
           return true 
      }

    }

  • 然后在你的按钮点击监听器
    override fun onClick(v: View?){
     when(v?.id){
         R.id.login_button->{
            if(validateUsername() &&  validatePassword()){
                // if both return true get the values from edittext and procced
            }
         }
    
     }}
    
    

推荐阅读