首页 > 解决方案 > 为什么 MutableLiveData setValue 在从 retrofit2.Callback 获得响应时不起作用

问题描述

我正在开发一个安卓应用程序。我使用 retrofit2 调用 REST API 并试图获得响应。我可以看到我得到了响应,onResponse()但是val当我分配它时,作为 MutableLiveData 的数据没有得到值onResponse() data.value = response.body()?.currently

override fun getSavedCurrentForecast(): LiveData<CurrentResponse> {

    val data = MutableLiveData<CurrentResponse>()
    val forecast = retrofitClient.getForecast(locationDataStore?.location)

    forecast.enqueue(object : retrofit2.Callback<ForecastResponse> {
        override fun onResponse(
            call: Call<ForecastResponse>,
            response: Response<ForecastResponse>
        ) {
            if (response.isSuccessful) {
                Timber.d("response: ${response.body()?.currently}")
                data.value = response.body()?.currently
            }
        }
        override fun onFailure(call: Call<ForecastResponse>, t: Throwable) {
            Timber.d("onFailure: $t")
        }

    })
    return data
}

我知道我得到了响应,但该方法仍然返回 null。我会很感激帮助,请随时要求澄清。

标签: androidmvvmandroid-livedatamutablelivedata

解决方案


利用

Timber.d("response: ${response.body()?.currently}")
            data.postvalue = response.body()?.currently

推荐阅读