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).