Android 为什么使用Kotlin时IsAnymous返回false?
我使用MVVM体系结构检查用户是否匿名登录。在我的存储库类中,我有以下字段:Android 为什么使用Kotlin时IsAnymous返回false?,android,firebase,kotlin,firebase-authentication,Android,Firebase,Kotlin,Firebase Authentication,我使用MVVM体系结构检查用户是否匿名登录。在我的存储库类中,我有以下字段: val isUserAnonymous = FirebaseAuth.getInstance().currentUser?.isAnonymous 在ViewModel类中,我有: val isUserAnonymous = repository.isUserAnonymous 在我的活动中,我使用了如下内容: R.id.sign_out_button -> { if (mainViewModel.i
val isUserAnonymous = FirebaseAuth.getInstance().currentUser?.isAnonymous
在ViewModel类中,我有:
val isUserAnonymous = repository.isUserAnonymous
在我的活动中,我使用了如下内容:
R.id.sign_out_button -> {
if (mainViewModel.isUserAnonymous!!) {
Log.d("TAG", "isUserAnonymous: " + isUserAnonymous) //False
}
}
在我成功登录并按下退出按钮后,isUserAnonymous
的计算结果为false。但是,如果我使用:
R.id.sign_out_button -> {
if (FirebaseAuth.getInstance().currentUser!!.isAnonymous) {
Log.d("TAG", "isUserAnonymous: " + isUserAnonymous) //True
}
}
isAnonymous
的计算结果为true。为什么?当我在我的存储库类中使用代码时,如何获得true的值?您应该将isUserAnonymous
实现更改为:
val isUserAnonymous: Boolean?
get() = repository.isUserAnonymous // in view model
val isUserAnonymous: Boolean?
get() = FirebaseAuth.getInstance().currentUser?.isAnonymous // in repository
当您为变量声明get()
方法而不是备份字段
返回的值时,您可以返回在调用此变量时计算的值
这类似于编写两个方法而不是变量:
// in view model
fun isUserAnonymous(): Boolean? {
return repository.isUserAnonymous
}
// in repository
fun isUserAnonymous(): Boolean? {
return FirebaseAuth.getInstance().currentUser?.isAnonymous
}
您应该将
isUserAnonymous
实现更改为:
val isUserAnonymous: Boolean?
get() = repository.isUserAnonymous // in view model
val isUserAnonymous: Boolean?
get() = FirebaseAuth.getInstance().currentUser?.isAnonymous // in repository
当您为变量声明get()
方法而不是备份字段
返回的值时,您可以返回在调用此变量时计算的值
这类似于编写两个方法而不是变量:
// in view model
fun isUserAnonymous(): Boolean? {
return repository.isUserAnonymous
}
// in repository
fun isUserAnonymous(): Boolean? {
return FirebaseAuth.getInstance().currentUser?.isAnonymous
}
哇,真的很管用。非常感谢您的快速回复。投票通过。15分钟后我会接受你的回答。哇,真的很有效。非常感谢您的快速回复。投票通过。15分钟后我会接受你的回答。