NoSuchMethodError на определенных версиях ОС

Я не уверен, почему я получаю эту ошибку только на определенных версиях Android (ниже 5.0).

Я зову:

myImageView.setImageDrawable(getResources().getDrawable(R.drawable.image, null));

Из-за этого я получаю NoSuchMethodError,
Что делать?

4 ответа

Решение

Использовать этот

myImageView.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.image));

Вместо этого

myImageView.setImageDrawable(getResources().getDrawable(R.drawable.image, null));

РЕДАКТИРОВАТЬ

когда вы используете setImageDrawable(getResources().getDrawable(R.drawable.image, null)); это будет показано ниже ошибки

НОТА setImageDrawable(getResources().getDrawable(R.drawable.image, null)); этот метод добавлен в API уровень 21

Вы можете прочитать больше о ContextCompat

Используйте ContextCompat, это вспомогательный класс для доступа к функциям в Context.

Используя этот класс, вы можете легко получить доступ к следующим ресурсам,

  • ImageDrawable
  • строка
  • Цвет
  • ColorStateList
  • CodeCacheDir

И многое другое...

Попробуйте следующим образом,

myImageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.image));

Ты звонишьgetResources().getDrawable(R.drawable.image, null) метод, который добавляется на уровне API 21

проверить документы по Android

Если вы используете второй параметр (тема) как ноль

Так что попробуйте использовать

getResources().getDrawable(R.drawable.image);

Вы можете использовать следующий код для того же

myImageView.setImageDrawable(getResources().getDrawable(R.drawable.image));

@Prem ответ правильный. Просто добавив это, чтобы дать вам совет.

В документации Android есть указание того, какой уровень API включал каждый метод. Например, тот, который вы используете, был представлен в Android 5.0 (уровень API 21).

Пример документации API

Другие вопросы по тегам