Android getResources (). GetDrawable () устарел API 22

В примере, отличном от lisp, например, эликсир, оператор потока управления if фактически является макросом. Функция if реализована как функция. Но для того, чтобы иметь более запоминающийся синтаксис, он также был реализован как макрос.

if true do 1+2 end
if true, do: ( 1+2 )
if(true, do: 1+2)
if(true, [do: (1+2)])
if(true, [{:do, 1+2}])

Все вышеперечисленное эквивалентно. Но первая строка - это реализация макросов if, которая, предположительно, будет расширена до функции if ниже.

Сделав, если функция и доступная в виде макроса дает вам эту классную способность поместить управляющие потоки if внутри параметра другой функции, сохраняя при этом знакомство с другими языками.

is_number(if true do 1+2 end)
is_number(if true, do: (1+2))

Итак, я думаю, что макросы позволяют вам лучше контролировать синтаксис, что позволяет создавать DSL, которые не могут выполнять стандартные функции.

645
задан Alex Lockwood 2 March 2019 в 04:55
поделиться

3 ответа

getDrawable (drawable интервал) удерживается от использования на уровне API 22. Поскольку ссылка видит это ссылка .

Теперь для разрешения этой проблемы мы должны передать нового конструктора наряду с, я хотел бы, как:-

getDrawable(int id, Resources.Theme theme)

Для Решений Действительно нравится this:-

В Java:-

ContextCompat.getDrawable(getActivity(), R.drawable.name);   

или

 imgProfile.setImageDrawable(getResources().getDrawable(R.drawable.img_prof, getApplicationContext().getTheme()));

В Kotlin:-

rel_week.background=ContextCompat.getDrawable(this.requireContext(), R.color.colorWhite)

или

 rel_day.background=resources.getDrawable(R.drawable.ic_home, context?.theme)

Hope, это поможет Вам. Спасибо.

0
ответ дан 22 November 2019 в 21:44
поделиться

Для некоторых, кто все еще заставил эту проблему решать даже после применения предложения этого потока (я раньше был одним как этот) добавляют эту строку на Вашем Классе приложений, onCreate () метод

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)

, Как предложено здесь , и здесь иногда это требуется, чтобы вектора доступа от ресурсов особенно, когда Вы имеете дело с пунктами меню, и т.д.

0
ответ дан 22 November 2019 в 21:44
поделиться

В Kotlin можно использовать расширение

fun Context.getMyDrawable(id : Int) : Drawable?{

    return  ContextCompat.getDrawable(this, id)
}

затем использование как

context.getMyDrawable(R.drawable.my_icon)
0
ответ дан 22 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: