ActionBarSherlock给出了大量的"Call requires API level 11(current min is 7)"错误

vur*_*rp0 18 android actionbarsherlock

我下载了ActionBarSherlock 4.0.3,解压缩并从该library文件夹中创建了一个新项目.src根据Eclipse,该文件夹充满了错误,因此我在线遵循各种指令,例如添加android-support-v4.jar,将目标API设置为15,将编译器合规性级别设置为1.6.尽管如此,该项目还有194个错误,所有错误都是"呼叫要求API级别11(当前最小值为7)".所以当我看到其中一个错误时,我看到了这个:

@Override
public void invalidateOptionsMenu() {
    getSherlock().dispatchInvalidateOptionsMenu();
}

public void supportInvalidateOptionsMenu() {
    invalidateOptionsMenu();
    //the previous line has this error in Eclipse:
    //Call requires API level 11 (current min is 7): android.app.Activity#invalidateOptionsMenu
}
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,因为invalidateOptionsMenu()被前一个函数覆盖了,但是Eclipse仍然抱怨需要更新的API级别的函数.当我查看其他错误时,我发现这也是许多其他错误的情况.

我对Python的经验比Java要多,所以我不明白导致这种情况发生的原因.帮助将不胜感激,如果您提供帮助,您是否还可以解释导致此问题的原因以及您采取了哪些措施来解决问题?每次遇到问题我都不想问别人,我也想学习.

Mar*_*Nuc 37

在运行Lint检查后发生在我身上.尝试右键单击sherlock动作栏项目 - > Android工具 - > Clear Lint Markers.

  • 这个答案只是一个临时修复.它不会使问题消失,它只会使Eclipse忘记存在问题.:/ (2认同)

dbr*_*708 20

使用支持jar中提供的ActivityCompat.

  • 这应该是正确的答案.想知道为什么你没有得到任何投票. (2认同)

Joa*_*son 7

由于您使用的是最低API级别7,并且在API级别11之前不存在invalidateOptionsMenu(),因此如果设备运行API级别7,则无法覆盖它,因此基本类中甚至无法使用该函数并且不能覆盖不存在的函数.

  • 你可以使用`supportInvalidateOptionsMenu()` (75认同)
  • ABS提供此方法.Eclipse错了/ ADT不够智能 (17认同)