gpt4 book ai didi

android - 内部函数不影响变量外部函数

转载 作者:搜寻专家 更新时间:2023-11-01 08:17:59 24 4
gpt4 key购买 nike

所以我正在使用 AsyncHTTPClient 进行调用并检查用户是否已通过身份验证。我有一个 bool 值“已验证”来检查它们是否已验证,并且想在 onSuccess 中更改它的值,但是 onSuccess 似乎并没有影响外部已验证的值,我很困惑为什么。

我可以确认它确实进入了 if 语句,所以我得到的响应是正确的。我是 Kotlin 的新手,但是 Java 中类似的东西确实有效,因为我现在正在过渡。

这是我的代码:

    fun authenticate(username: String, password: String): Boolean? {
var params = RequestParams()
params.put("username", username)
params.put("password", password)
var authenticated: Boolean? = null
var a: Int = 1

//Encrypt password and stuff

restClient.get("/authenticate", params, object : JsonHttpResponseHandler(){
override fun onSuccess(statusCode: Int, headers: kotlin.Array<out Header>?, response: JSONObject?) {
if(response == null) {Log.d("no response", "404")}
else if (response.get("success").toString() == "true") {
authenticated = true
a = a + 1
Log.d("authenticatedInside", a.toString())
Log.d("authenticatedInside", authenticated.toString())
}
}
})

Log.d("authenticated", a.toString())
Log.d("authenticated", authenticated.toString())
return authenticated
}

AuthenticatedInside 提供正确的值。

a只是一个测试整数,这里的结果a还是1,authenticated还是null,也返回null。

最佳答案

null因为onSuccess方法被异步调用,这意味着在您尝试访问 authenticated 的值之前不会调用该方法因此它仍未初始化。

解决这个问题的方法之一是创建另一个函数,例如:

fun onAuthenticateResult(authenticated : Boolean){
// Write what you want to do with authenticated here
}

然后从 onSuccess 方法调用该方法,当然这不会在 UI 线程上调用,因此请注意不要直接修改此方法中的 UI 的任何部分。

关于android - 内部函数不影响变量外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56396699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com