gpt4 book ai didi

android - 更新到 3.1.0 后 ObservableField 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:57 24 4
gpt4 key购买 nike

Android Studio 更新到 3.1.0 并将 kotlin 版本更新到 1.2.31 后,我Observables 有问题。

someVm 值为空。

class ViewModel1(car: Car) : BaseObservable() {

val someVm = ObservableField<ViewModel2>(ViewModel2(car))

shipmentVm.get()!!
}

class ViewModel2(car: Car) : ItemViewModel() {

val car= ObservableField(car)
}

open class ItemViewModel : BaseObservable() {

val first = ObservableField(false)
val last = ObservableField(false)
}

非常感谢!

最佳答案

我通过子类化 ObservableField 解决了这个问题。 FWIW,它不是有效的 liskov,因为它加强了先决条件,但目前工作正常。

如果您从 java 中使用它,空值仍然会潜入此类(并导致 NPE)。

import android.databinding.Observable
import android.databinding.ObservableField

class NonNullObservableField<T : Any>(
value: T, vararg dependencies: Observable
) : ObservableField<T>(*dependencies) {
init {
set(value)
}

override fun get(): T = super.get()!!

@Suppress("RedundantOverride") // Only allow non-null `value`.
override fun set(value: T) = super.set(value)
}

关于android - 更新到 3.1.0 后 ObservableField 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49517029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com