某些操作系统版本的NoSuchMethodError

时间:2017-12-29 12:04:06

标签: java android nosuchmethoderror

我不确定为什么我只在某些Android版本(5.0以下)上出现此错误。

我在打电话:

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

因此,我得到NoSuchMethodError 怎么办?

4 个答案:

答案 0 :(得分:7)

使用此

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

而不是这个

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

修改

当您使用setImageDrawable(getResources().getDrawable(R.drawable.image, null));时,它会显示以下错误

enter image description here

注意 setImageDrawable(getResources().getDrawable(R.drawable.image, null));此方法已在API级别21中添加

您可以阅读有关ContextCompat

的更多信息

答案 1 :(得分:2)

  

使用ContextCompat帮助程序类来访问其中的功能   Context

使用此课程,您可以轻松访问以下资源,

  • ImageDrawable
  • 字符串
  • 颜色
  • ColorStateList
  • CodeCacheDir

还有更多......

请按以下方式尝试

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

答案 2 :(得分:1)

@Prem回答是正确的。只需添加此项即可为您提供提示。

在Android文档中,指示了每种方法包含哪个API级别。例如,Android {5.0(API级别21)中引入了the one you're using

API documentation example

答案 3 :(得分:1)

你在打电话 在API级别21中添加的getResources().getDrawable(R.drawable.image, null)方法

检查Android docs

如果您使用第二个参数(主题)作为空

所以尝试使用

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

您可以将以下代码用于相同的

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