override fun detectMethod(): MutableLiveData<String> {
val userMethod = MutableLiveData<String>()
mAuth.addAuthStateListener {
val currentUser = mAuth.currentUser
if (currentUser!!.providerData.size > 0) {
Log.d("inside if",currentUser.providerData[currentUser.providerData.size - 1].providerId)
userMethod.value =
currentUser.providerData[currentUser.providerData.size - 1].providerId
}
}
Log.d("repository", userMethod.value.toString())
return userMethod
}
我需要 userMethod.value 中的值 currentUser.providerData[currentUser.providerData.size - 1].providerId
如果你想读取
LiveData
对象内部存在的值,你不应该检查对象内部存在的value
字段,你必须观察变化,否则,value
将永远是null
。因此,请查看有关如何开始观察LiveData
对象的官方文档。在代码中,它会很简单:
val observer = Observer<String> { providerId ->
Log.d("TAG", providerId)
}
userMethod.observe(this, observer)
但是由于您使用的是 Kotlin,我建议您使用更优雅的方式来实现相同的目标。如今,最好使用Kotlin Coroutine和Asynchronous Flow。所以我认为这个资源会有所帮助。这是相应的repo。