android - 为什么 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。我会很感激帮助,请随时要求澄清。
解决方案
利用
Timber.d("response: ${response.body()?.currently}")
data.postvalue = response.body()?.currently
推荐阅读
- wordpress - 将自定义帖子元添加到 woocommerce 订单电子邮件
- sql - 根据日期只获取一列数据
- google-sheets - 将晨星投资组合数据提取到 Google 表格中
- java - 裁剪图像后尺寸变大
- python - 如果 df2 中不存在列,如何将列从 df1 添加到 df2,否则什么也不做
- flutter - 在所有表格上颤动可选文本
- android-studio - Recyclerview 未完全显示最后一项
- c# - Resharper 不会突出显示未使用的私有变量
- mongodb - 如果字段名称是特殊字符,MongoDB 查找字段名称是否存在
- android - Ionic BLE ble.write 在 ios 上返回 null