更新到3.1.0后,ObservableField返回null

时间:2018-03-27 15:35:07

标签: android data-binding kotlin observable

在将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)
}

非常感谢!

1 个答案:

答案 0 :(得分:0)

我通过继承ObservableField来解决这个问题。 FWIW,它不是有效的liskov,因为它增强了前提条件,但现在工作正常。

如果您从java中使用它,Null仍然可以进入这个类(并导致NPE)。

private ProcessBuilder processBuilder;
private NtpServerUtil ntpServerUtil;

@Before
public void init(){
   processBuilder = Mockito.mock(ProcessBuilder.class);
   ntpServerUtil = Mockito.spy(NtpServerUtil.class);

   MockitoAnnotations.initMocks(this);
   PowerMockito.whenNew(ProcessBuilder.class).withArguments(Mockito.anyString()).thenReturn(processBuilder);
}

@Test
public void testEnableNtp() throws Exception {
   ...

   NtpServerUtil.enable();

   ...
}