我正在开始一个新的Android项目并决定使用 Kotlin 和 Firebase ,现在我可以使用createUserWithEmailAndPassword
成功创建用户在我的SignupActivity上,我的用户在createUserWithEmailAndPassword完成后成功登录。
现在我正在尝试使用FirebaseAuth.AuthStateListener使用onAuthStateChanged(FirebaseAuth auth)
在{{3}}上触发的回调事件进一步使用,但我在onCreate(savedInstanceState: Bundle?)
函数内创建的侦听器不是被触发并且我缺乏将Java代码转换为Kotlin的经验并没有帮助我找出根本问题。
我有一些基于Java的示例代码,如下所示:
onCreate(...//
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
// NOTE: this Activity should get onpen only when the user is not signed in, otherwise
// the user will receive another verification email.
sendVerificationEmail();
} else {
// User is signed out
}
// ...
}
};
FirebaseAuth.AuthStateListener { auth ->
val user = auth.currentUser
if(user != null){
// User is signed in
Log.d(TAG, "Signed in")
Toast.makeText(this, "User", Toast.LENGTH_LONG).show();
sendVerificationEmail()
}else{
// User is signed out
Log.d(TAG, "Signed out")
Toast.makeText(this, "Null", Toast.LENGTH_LONG).show();
}
}
我将一些日志和Toast元素用于调试目的,但它们都没有被触发,我认为 FirebaseAuth.AuthStateListener 中缺少onAuthStateChanged
但我不知道我知道如何解决它。
如果有人能就我的错误给我一些建议,那将非常感激。
提前致谢。
答案 0 :(得分:3)
这是帮助我的,在调用addAuthStateListener
时注意括号 - 对kotlin不熟悉我使用了{ }
卷曲的那些:
public override fun onStart() {
super.onStart()
firebaseAuth.addAuthStateListener(authStateListener)
}
public override fun onPause() {
super.onPause()
firebaseAuth.removeAuthStateListener(authStateListener)
}