android – ObservableField在更新到3.1.0后返回null

Android Studio更新到3.1.0并将kotlin版本更新到1.2.31后,我遇到了Observables的问题.

someVm值为null.

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中使用它,Null仍然可以进入这个类(并导致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)
}
上一篇:编译Mysql时configure: error: No curses/termcap library found 的错误解决方法


下一篇:Centos7安装Hadoop