Проверьте версию Android SDK с помощью Kotlin, когда - PullRequest
0 голосов
/ 07 июня 2018

Я хочу проверить версию Android SDK во время выполнения.Я попробовал это так:

fun Context.getDrawableById(resId : Int) : Drawable {

    when (Build.VERSION.SDK_INT) {

        in Int.MIN_VALUE..20 -> return resources.getDrawable(resId)
        else -> return getDrawable(resId)
    }
}

Я получил предупреждение компилятора "Вызов требует API уровня 21 (текущий минимум - 19)" * .Поэтому я изменил свой код:

fun Context.getDrawableById(resId : Int) : Drawable {

    if (Build.VERSION.SDK_INT < 21)
        return resources.getDrawable(resId)
    else
        return getDrawable(resId)
}

Нет предупреждения компилятора.

Мой вопрос: возможно ли использовать when в этом случае без предупреждения компилятора?Как?

1 Ответ

0 голосов
/ 09 июня 2018

Можно ли использовать «когда» в этом случае без предупреждения компилятора?

Да, используя ContextCompat.getDrawable() вместо context.getDrawable():

fun View.getDrawable(resId : Int): Drawable? =
        when (Build.VERSION.SDK_INT) {
            in Int.MIN_VALUE..20 -> resources.getDrawable(resId)
            else -> ContextCompat.getDrawable(context, resId)
        }

Обратите внимание, что ContextCompat.getDrawable() возвращает необязательный тип Drawable?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...