Обнуляемая аннотация Android не распознается в Котлине - PullRequest
0 голосов
/ 26 апреля 2019

Исходный код Android предполагает, что findViewById может возвращать ноль:

@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 / IDE, или команда Android должна что-то с этим сделать?

1 Ответ

0 голосов
/ 26 апреля 2019

findViewById использует дженерики.Мы явно предоставляем тип, который он должен возвращать.Если мы переписываем строку инициализации, компилятор будет жаловаться на обнуляемость.

swipeRefreshLayout = view.findViewById<SwipeRefreshLayout?>(R.id.swiperefresh)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...