Android源代码建议findViewById
可以返回null:
@Nullable
public final <T extends View> T findViewById(@IdRes int id) {
if (id == NO_ID) {
return null;
}
return findViewTraversal(id);
}
但是当从Kotlin调用它时,编译器不会抱怨使用这种方式的可空性:
private lateinit var swipeRefreshLayout: SwipeRefreshLayout
...
swipeRefreshLayout = view.findViewById(R.id.swiperefresh)
正如我所猜测的那样,这个Nullable
注释来自android pacakge,还有其他Nullable
注释,Kotlin确实能很好地识别它。是Kotlin / IDE相关问题,还是Android团队应该对此做些事情?
答案 0 :(得分:0)
findViewById
使用泛型。我们明确提供了它应该返回的类型。如果我们重写init行,编译器将抱怨可空性。
swipeRefreshLayout = view.findViewById<SwipeRefreshLayout?>(R.id.swiperefresh)