Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Чем заменять deprecated методы

#android


Есть к примеру вот такая строка

tabLayout.getTabAt(tabLayout.getTabCount() - 1)
    .setIcon(getResources().getDrawable(R.drawable.icon_contacts));


В студии это выглядит так:


Вопрос: чем заменять такие методы, и где можно найти актуальные методы которые могут
заменить функционал deprecated-метода.
    


Ответы

Ответ 1



Найти актуальные методы всегда можно в документации. Конкретно по getDrawable: http://developer.android.com/intl/ru/reference/android/content/res/Resources.html#getDrawable(int) deprecated с API 22. Указывают, что заменить можно на Context.getDrawable(int) или getDrawable(int, Theme), передав тему. Либо использовать библиотеки совместимости, тогда так: ContextCompat.getDrawable(context, R.drawable.***), тогда не нужны проверки.

Ответ 2



Не забудьте добавить проверку на доступность данного метода в новом API. Например, если новый метод есть только в API 21, то на старых версиях ОС у вас будут ошибки и нужно добавить проверку вида: if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ) { //используем новый метод } else { //используем старый deprecated метод }

Ответ 3



Идёте на Android developers в поиске вбиваете свой класс, у которого метод устарел, не забудьте предворительно указать версию API в списке пакетов, далее находите описание класса с его полями, методами и т.д., далее ищите свой метод в списке, в описании метода всегда написано, если он устарел, что лучше использовать вместо него, это касается не только методов, но и в целом любых deprecated. На живом примере, переходите по ссылке: http://developer.android.com/intl/ru/reference/android/app/Activity.html#dismissDialog(int) Там в описании чётко написано, что делать.

Комментариев нет:

Отправить комментарий