在這張圖片中,我有一個錯誤,“大于”,我有兩個 LiveData 值_adder.value和_quantity.value,我想在它們之間進行比較。
這是一個螢屏 ,這是錯誤
uj5u.com熱心網友回復:
實時資料值是可為空的,因此您無法進行這種比較。來自 androidX LiveData java 類:
@Nullable
public T getValue() {
Object data = mData;
if (data != NOT_SET) {
return (T) data;
}
return null;
}
該@Nullable注解告訴科特林具有使價值空。這就是為什么錯誤說
Required Int
Found Int?
val adderValue = _adder.value //this is nullable
val quantityValue = _quantity.value //this is nullable
為了解決您的問題,您必須決定如何處理null.
如果您希望該 null 等于零,則:
_adder.value ?: 0 < _quantity.value ?: 0
或者如果為空,那么什么都不應該發生,然后:
val adderValue = _adder.value ?: return
val quantityValue = _quantity.value ?: return
if (adderValue < quantityValue)
由于您要添加紙杯蛋糕,因此我推測您想要的是以下內容:
val adderValue = _adder.value ?: 0 //no additions before so is ok
val quantityValue = _quantity.value ?: return //null quantity is not ok, error we stop
if (adderValue < quantityValue) {
_adder.value = adderValue
}
您在那里所做_adder.value?.plus(1)的不是更新實時資料值。
uj5u.com熱心網友回復:
Kotlin 的相等運算子(== 和 !=)可以處理空值,而順序比較運算子(<、<=、>、>=)不能。
在進行比較之前,您必須檢查可空性。
如果使用 Elvis 運算子的實時資料為空(如 0),您也可以使用另一個值,但我不會建議此解決方案,因為空值與零值不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361495.html
