使Android Lifecycle Observer接收器在Kotlin中不可为空

时间:2018-11-22 06:22:41

标签: android kotlin android-lifecycle

我有Result包装器,用于包装来自后端的数据

data class Result<T>(val success: Boolean, val result: T?, val message: String?)

此想法,请检查success而不是结果为null或无效,并获取格式化的消息以进行UI错误报告。但是,当尝试将其与android生活方式组件一起使用时,尤其是在Observer中,我必须检查是否为空。

enter image description here

如何避免这种空检查?发生这种情况是由于

void onChanged(@Nullable T t);
Observer

。我试图扩展它,但它似乎需要更多的自定义包装类。我们在这里有避免空检查的解决方案吗?

2 个答案:

答案 0 :(得分:3)

这是一个框架错误,参数被注释为@Nullable。已在androix.lifecycle 2.0.0-beta01中修复。

答案 1 :(得分:2)

  

@Andrei Vinogradov的答案的更新答案

在升级到 2.0.0-beta01 之前,您可以尝试此解决方案。使用Kotlin库中的标准功能 let

it?.let{ result ->
    if(result.success){
    // Rest of your code ..
    }
}