Значение переменной не копируется из области обратного вызова - PullRequest
0 голосов
/ 10 июля 2020

Это очень простой c обратный вызов POST с использованием Retrofit. После вызова моего Rest API response.code равен 200, а response.body содержит нужный мне результат и не является нулевым. Журнал подтверждает это. По какой-то причине ссылка, содержащаяся в response.body , не копируется в переменную loginResult , и последний оператор if всегда истинен. Я подозреваю, что это как-то связано с тем, что обратный вызов не может получить доступ к переменной loginResult , но я не уверен.

var loginResult: AuthenticationRequestResult? = null
    
        api.authenticateUser(AuthenticationRequestData(username, password)).enqueue(object : Callback<AuthenticationRequestResult> {
        override fun onFailure(call: Call<AuthenticationRequestResult>, t: Throwable) {
            Log.e(TAG,t.message,t)
        }

        override fun onResponse(call: Call<AuthenticationRequestResult>, response: Response<AuthenticationRequestResult>) {
            loginResult = response.body() as AuthenticationRequestResult
            Log.d(TAG,"response code:" + response.code())
            Log.e(TAG,"Response body: " + response.body())
            Log.e(TAG,"Response body error: " + response.body()?.error)
        }
    })

    if(loginResult == null) {Log.e(TAG,"LoginResult is null")}
...