向后兼容的Java代码会导致编译错误

时间:2014-08-15 09:55:10

标签: java android backwards-compatibility

我是Android编程的新手。 我知道一些函数和类不在第一个Android版本中,所以我们必须使用不同的代码来处理不同的版本。例如,要设置Button的背景颜色,我应该使用以下代码:

    // Set button background
    if (Build.VERSION.SDK_INT >= 16) {
        this.setBackground(background);
    } else {
        this.setBackgroundDrawable(background);
    }

我的项目的目标API版本是11,因此setBackground产生编译错误,setBackgroundDrawable产生弃用警告,我应该如何更改此代码或清单等以使此应用程序正常工作两个版本?

在清单中:

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="19" />

2 个答案:

答案 0 :(得分:3)

您可以(并且应该)使用setBackgroundResource来引用您的背景可绘制资源。自API 1起可用。如:

this.setBackgroundResource(R.drawable.your_backround_resource_id);

答案 1 :(得分:3)

如果您的背景是资源,请务必遵循Oren的回答。但是,我们假设你有一些其他Drawable你希望用作你的背景。

要清除编译错误,您需要针对API级别16或更高版本进行编译。在Eclipse中,即Project&gt;属性&gt; Android主菜单;在Android Studio中,这是compileSdkVersion文件中的build.gradle值。

您必须忍受弃用。