我开发了运行Marshmallow的设备上运行正常的应用程序,现在当我尝试在早期版本的android(V 21)上运行它时,它会出现以下错误
java.lang.NoSuchMethodError: No Virtual methold getColor(ILandroid/content/res/Resources$Theme;)
in class Landroid/content/res/Resources; or its super classes`
在gradle中,我包括:
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.veggies.test"
minSdkVersion 21
targetSdkVersion 25
versionName '1.1'
`
我还复制了资源文件,例如colors.xml等从values
到values-v21
答案 0 :(得分:2)
ok。问题是这个函数getColor()已经被包含在api 23之后所以它显示错误。你将不得不添加检查更低版本
int color;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
color = ContextCompat.getColor(this, R.color.app_theme_color);
} else {
color = getResources().getColor(R.color.app_theme_color);
}
答案 1 :(得分:1)
这是你的问题。
minSdkVersion 21
targetSdkVersion 25
您所说的是,此应用仅在大于或等于21的设备上运行,最好是我的目标是api级别为25的设备。更改min = 15并定位相同。
然后同步,清理并再次运行。 *在api之后引入了getColors,这是主要问题。