某些 OS 版本的 NoSuchMethodError

NoSuchMethodError on certain OS versions

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

我打电话给:

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

正因为如此,我得到了 NoSuchMethodError
怎么办?

使用这个

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

@Prem 回答正确。只需添加此内容即可为您提供提示。

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

您正在打电话 getResources().getDrawable(R.drawable.image, null) API 级别 21

中添加的方法

检查Android docs

如果您将第二个参数(主题)用作 null

所以尝试使用

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

您可以使用以下代码实现同样的效果

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

Use ContextCompat, it's helper class for accessing features in Context.

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

  • ImageDrawable
  • 字符串
  • 颜色
  • 颜色状态列表
  • 代码缓存目录

还有更多...

按照下面的方法试试,

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