如何删除"Call required API level"错误?

BAr*_*ell 57 eclipse android

我在Eclipse中遇到此错误:调用需要API级别14(当前最小值为8):android.app.ActionBar#setHomeButtonEnabled

这是代码:

if(android.os.Build.VERSION.SDK_INT>=14) {
    getActionBar().setHomeButtonEnabled(false);
}
Run Code Online (Sandbox Code Playgroud)

在清单中:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" />
Run Code Online (Sandbox Code Playgroud)

如何删除此错误?

Eri*_*ric 99

添加@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)方法签名上方的行,其中Build.VERSION_CODES.ICE_CREAM_SANDWICH计算结果为14,即Ice Cream Sandwich的API版本代码.

像这样:

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void yourMethod() {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        getActionBar().setHomeButtonEnabled(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @REREUS是的,`@ TargetApi`只是通过告诉编译器我们已经知道并且已经处理它来阻止编译器. (5认同)
  • 它适用于14以上的所有API吗? (2认同)

TmT*_*ron 7

注意:接受的答案已过时.

Android Studio 3.0 Beta 7你不再需要@TargetApi注释.
看来皮棉检查现在更聪明了.

所以这就足够了:

public void yourMethod() {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        getActionBar().setHomeButtonEnabled(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 没错,但是此方法不能与必须以“ super”为第一条指令的构造函数一起使用。 (2认同)