У меня есть модель просмотра с MutableLiveData, которая выглядит следующим образом:
private val _num = MutableLiveData<Float>()
val num: LiveData<Float>
get() = _num
val sum: Int= sumMap.map { it.value }.sumBy { it.num}
_num.value = sum.toFloat()
Я могу правильно получить значение, но когда я пытался получить доступ через viewmodel obje c, я получаю
kotlin .KotlinNullPointerException
Почему я получаю эту ошибку? мой код в моем фрагменте выглядит следующим образом:
val dVal: Float = viewModel.num.value!!
Log.i("MainScreenFragment", "numVal $dVal")
Кроме того, если я удаляю !! assertion
, я получаю required Float but found Float?
, Почему это? Я никогда не объявлял свою переменную как обнуляемую
РЕДАКТИРОВАТЬ:
Это вся функция, эта функция вызывается внутри init
block
private fun getPlacesCountries() {
coroutineScope.launch {
var getPlacesDeffers = PlaceApi.retrofitService.getPropeties()
try {
var result = getPlacesDeffers.await()
if (result.isNotEmpty()) {
val sumMap: Map<String, Data> = result.mapValues { (country,data) -> data.last() }
val sum: Int= sumMap.map { it.value }.sumBy { it.num }
_num.value = sum.toFloat()
}
}
} catch (e: Exception) {
_response.value = "Failure: ${e.message}"
}
}
}