18

我下载了 ActionBarSherlock 4.0.3,解压缩并从library文件夹中创建了一个新项目。根据 Eclipse,该src文件夹充满了错误,所以我按照网上的各种说明进行操作,例如添加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
}

这对我来说看起来很奇怪,因为invalidateOptionsMenu()它被之前的函数覆盖了,但是 Eclipse 仍然抱怨该函数需要更新的 API 级别。当我查看其他错误时,我发现许多其他错误也是如此。

我在 Python 方面的经验比 Java 多得多,所以我对导致这种情况发生的原因一无所知。帮助将不胜感激,如果您提供帮助,您能否解释一下导致此问题的原因以及您为解决该问题所做的工作?我不想每次遇到问题都问别人,我也想学习。

4

5 回答 5

37

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

于 2012-04-23T21:47:45.633 回答
20

使用支持 jar 中提供的ActivityCompat 。

于 2012-12-30T22:26:07.150 回答
7

由于您使用的是最低 API 级别 7,并且invalidateOptionsMenu()直到 API 级别 11 才存在,因此您无法在没有错误的情况下覆盖它,因为如果设备运行 API 级别 7,则该函数甚至在基类中都不可用并且不能覆盖不存在的函数。

于 2012-04-21T16:46:40.877 回答
1

所有这些答案都是错误的,除了 dbrown0708 答案,但我会更声明

您可以使用ActivityCompat在较低的 API 中使用 invalidateOptionMenu,因为它在支持库 v4 中提供

语法是 invalidateOptionsMenu(Activity activity);

代码是

ActivityCompat.invalidateOptionsMenu(this);

在 API 中 从级别 11

invalidateOptionsMenu();
于 2014-12-29T10:29:54.167 回答
0

尝试使用import android.support.v4.app.Fragment; 作为你的图书馆

于 2014-01-17T10:02:48.377 回答