提问人:Jadu 提问时间:12/26/2022 更新时间:12/26/2022 访问量:85
未在 Successlistener Android 中分配值
Value is not assigned In Successlistener Android
问:
我正在尝试设置我已全局声明的变量的值,但是当我将其设置为默认值时......
让我向你展示代码......
var userWeight:Double = 0.0
在这里,我正在尝试更新 userWeight 值,但它在 sucesslistener 外部设置为 0.0,并且在其中,该值已正确更新......
这是我的日志,可以更好地澄清这一点
getUserDetails().addOnSuccessListener { document->
userWeight = document.toObject(User::class.java)!!.weight.toDouble()
Log.d("temperory","$userWeight")
}
getUserDetails().addOnSuccessListener { document->
userWeight = document.toObject(User::class.java)!!.weight.toDouble()
Log.d("temperory","$userWeight")
}
Log.d("weightuser","$userWeight")
答:
1赞
Priyanshu
12/26/2022
#1
Firebase Calls 以异步方式工作,因此我们有不同的处理方式。
1) 回调 - 您可以创建接口并使用回调来更新值。
这是参考 - 链接
2) 协程 await() 函数 - 您需要添加 kotlinx-coroutines-play-services 库才能使用 await() 函数。 这是参考 -
import kotlinx.coroutines.tasks.await
suspend fun getIdTokenForUser (
user: FirebaseUser
): GetTokenResult {
return try {
user.getIdToken().await()
}
catch (e: Exception) {
// handle error
}
}
3) 仅在侦听器内执行与用户权重相关的操作
评论
0赞
Jadu
12/26/2022
谢谢,我用了第三个!它奏效了欢呼声
评论