android - 登录屏幕上的 EditText 验证
问题描述
我已经有这个问题几个小时了。我有一个简单的登录页面,但我想让用户输入一些内容,而不仅仅是单击登录按钮。
我在下面粘贴了我的代码
username_register
是个editText
login_button
是button
用来登录的
谢谢!
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()
}
}
}}
}
解决方案
我猜你的问题是因为如果你的情况下的条件只会执行两者之一,这就是它导致问题的原因,你需要做的是自己验证每一个,你可以尝试以下代码:
// 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 } } }}