Call requires API level 16 (current min is 14)

不羁的心 提交于 2021-01-04 04:17:31

问题


I have this line in my code:

linearLayout.setBackground(drawable);

setBackground() shows the following error:

Call requires API level 16 (current min is 14)

What does this mean?

Can I raise my API level?

What does a higher/lower API level mean?

Does it limit the amount of devices my app can be used on if the API level is higher?


回答1:


What does this mean?

It means that the setBackground(Drawable) method was added in API Level 16, and older devices do not have it. However, your app's minSdkVersion is 14. So, unless you take steps to avoid this line on API Level 14 and 15 devices, your app will crash on those devices.

Can I raise my API level?

You could set your minSdkVersion to 16.

Does it limit the amount of devices my app can be used on if the API level is higher?

Yes. If you say that your minSdkVersion is 16, then devices running a version of Android older than that cannot run your app.

At the time of this writing, about 90% of Android devices accessing the Play Store are on API Level 16 or higher (i.e., are running Android 4.1 or higher).

You can read more about the concept of API levels in the documentation. Note that this documentation is a bit old, in that it focuses on the minSdkVersion being defined in the manifest. In Android Studio projects, minSdkVersion is usually defined in your app module's build.gradle file.




回答2:


Can I raise my API level?

You can set API to 16 it will limit device below 16 but it will perfectly work on devices API 16 and higher

Or else You can use API check and set

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));
}



回答3:


Use a validation method that will be supported only in API LEVEL >= 16 (note the use of ContextCompat class:

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



回答4:


Use:

layout.setBackgroudResource(R.drawable.ready);       


来源:https://stackoverflow.com/questions/32210559/call-requires-api-level-16-current-min-is-14

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!