Почему мой MutableLiveData <Long>обнуляется? - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы знать, почему моя переменная elapsed заканчивается Long? вместо Long. Я определил его как необнуляемый, и ни одна из операций, которые я выполняю над ним, не может привести к нулю.

По-прежнему получаю ошибку для последней строки:

Operator call corresponds to a dot-qualified call 'elapsed.div(1000.toLong())' which is not allowed on a nullable receiver 'elapsed'.
var startTime: Long = 0
var _elapsedTime = MutableLiveData<Long>(0)
_elapsedTime.value = System.currentTimeMillis() - startTime
val elapsed = _elapsedTime.value
val testVal = elapsed / 1000.toLong()

1 Ответ

2 голосов
/ 06 апреля 2020

Это заканчивается как Long?, потому что метод LiveData.getValue() помечен @Nullable в Java.

Для взаимодействия между Java и Kotlin, в Kotlin, что метод возвращает значение NULL Long, поэтому Long?.

https://kotlinlang.org/docs/reference/java-interop.html#nullability -аннотации

...