Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么使用Kotlin时IsAnymous返回false?_Android_Firebase_Kotlin_Firebase Authentication - Fatal编程技术网

Android 为什么使用Kotlin时IsAnymous返回false?

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

我使用MVVM体系结构检查用户是否匿名登录。在我的存储库类中,我有以下字段:

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分钟后我会接受你的回答。