Метод enqueue не ожидает ответа, поэтому обычно нулевой результат в вашем возвращаемом ответе.
Чтобы решить эту проблему, вам не нужно ничего возвращать, только поместите ваши жизненные данные в область действия. Классифицируйте и обновите значение:
class YourClass {
private var responseMutableLiveData: MutableLiveData<String> = MutableLiveData()
val responseLiveData: LiveData<String>
get() = responseMutableLiveData
fun fetchData() {
webApi.fetchData().enqueue(object : Callback<JsonElement> {
override fun onFailure(call: Call<JsonElement>, t: Throwable) {
Log.e(TAG, "Failed to fetch token", t)
}
override fun onResponse(call: Call<JsonElement>, response: Response<JsonElement>) {
responseMutableLiveData.postValue(response.body())
Log.d(TAG, "response: ${response.value}")
}
})
}
}
Живая данные наблюдаются, и, когда значение изменяется, другой класс реагирует на него.