某些 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
中添加的方法
如果您将第二个参数(主题)用作 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));
我不确定为什么我只在某些 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
如果您将第二个参数(主题)用作 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));