呼叫需要API级别16(当前最小值为14)

stu*_*dog 2 android android-layout android-xml android-fragments android-activity

我的代码中有这一行:

linearLayout.setBackground(drawable);
Run Code Online (Sandbox Code Playgroud)

setBackground() 显示以下错误:

呼叫需要API级别16(当前最小值为14)

这是什么意思?

我可以提高我的API级别吗?

更高/更低的API级别意味着什么?

如果API级别更高,是否会限制我的应用可以使用的设备数量?

Com*_*are 7

这是什么意思?

这意味着该setBackground(Drawable)方法是在API级别16中添加的,而旧设备没有.但是,您的应用程序minSdkVersion是14.因此,除非您采取措施避免在API级别14和15设备上使用此行,否则您的应用程序将在这些设备上崩溃.

我可以提高我的API级别吗?

您可以将您设置minSdkVersion为16.

如果API级别更高,是否会限制我的应用可以使用的设备数量?

是.如果你说你的minSdkVersion是16岁,那么运行早于此版本的Android的设备将无法运行你的应用.

在撰写本文时,大约90%访问Play商店的Android设备都在API级别16或更高级别(即运行Android 4.1或更高版本).

您可以在文档中阅读有关API级别概念的更多信息.请注意,此文档有点陈旧,因为它侧重于minSdkVersion清单中定义的内容.在Android Studio项目中,minSdkVersion通常在app模块的build.gradle文件中定义.


N J*_*N J 6

我可以提高我的API级别吗?

您可以将API设置为16,它会将设备限制在16以下,但它将完全适用于API 16及更高版本的设备

否则您可以使用API​​检查和设置

final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    layout.setBackgroundDrawable( getResources().getDrawable(R.drawable.ready) );
} else {
    layout.setBackground( getResources().getDrawable(R.drawable.ready));
}
Run Code Online (Sandbox Code Playgroud)