调用需要API级别16(当前最低级别为14)

4

我在代码中有这一行:

linearLayout.setBackground(drawable);

setBackground() 出现以下错误:

调用需要 API 级别 16(当前最小为 14)

这是什么意思?

我能提高我的 API 级别吗?

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

如果 API 级别较高,则是否会限制我的应用程序可使用的设备数量?


3
请问API级别是什么意思? - adelphus
4个回答

9
这是什么意思?
这意味着在API Level 16中添加了 setBackground(Drawable) 方法,旧设备没有此方法。但是,您的应用程序的 minSdkVersion 是14。因此,除非您采取措施避免在API Level 14和15设备上使用此行,否则您的应用程序将在这些设备上崩溃。
我能提高我的API级别吗?
您可以将 minSdkVersion 设置为16。
如果API级别更高,是否会限制我的应用程序可用的设备数量?
是的。如果您说您的 minSdkVersion 是16,则运行旧版Android的设备无法运行您的应用程序。
在撰写本文时,访问Play Store的约90%的Android设备都在API Level 16或更高版本(即运行Android 4.1或更高版本)。

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


7

我能提高我的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));
}

1

使用仅在API LEVEL >= 16支持的验证方法(注意使用 ContextCompat 类):

  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
            linearLayout.setBackground(ContextCompat.getDrawable(this, drawableid));
        }

0

使用:

layout.setBackgroudResource(R.drawable.ready);       

1
@fool-dev:这是一个回答,不是问题。 - סטנלי גרונן

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接