#android #android-studio #kotlin
Вопрос:
У меня есть этот РАБОЧИЙ код в Котлине
val listener = View.OnClickListener {
progressDialog.show()
auth.signInWithEmailAndPassword(etEmail.text.toString(),etPassword.text.toString())
.addOnCompleteListener{
progressDialog.dismiss()
if (it.isSuccessful){
Toast.makeText(this@SignInActivity,"Logged In",Toast.LENGTH_LONG).show()
val intent = Intent(this@SignInActivity,MainActivity::class.java)
startActivity(intent)
} else{
Toast.makeText(this@SignInActivity, it.exception?.message,Toast.LENGTH_LONG).show()
}
}
}
btnSigIn.setOnClickListener(listener)
Если я добавлю OnCompleteListener<AuthResult>
, как показано ниже
val listener = View.OnClickListener {
progressDialog.show()
auth.signInWithEmailAndPassword(etEmail.text.toString(),etPassword.text.toString())
.addOnCompleteListener{
OnCompleteListener<AuthResult> { task ->
progressDialog.dismiss()
if (task.isSuccessful){
Toast.makeText(this@SignInActivity,"Logged In",Toast.LENGTH_LONG).show()
val intent = Intent(this@SignInActivity,MainActivity::class.java)
startActivity(intent)
} else{
Toast.makeText(this@SignInActivity, task.exception?.message,Toast.LENGTH_LONG).show()
}
}
}
}
btnSigIn.setOnClickListener(listener)
он не показывает никаких ошибок, но НЕ работает (не входит в систему).
Мой вопрос в том, в чем может быть причина? Спасибо.
Ответ №1:
У вас есть скобки {}
вокруг вашего слушателя, поэтому вы создали лямбду, которая возвращает слушателя, и это то, к чему вы переходите addOnCompleteListener
. Когда лямбда будет вызвана по завершении, она создаст вашего внутреннего слушателя и ничего с ним не сделает, а затем вернется.