我下载了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要多,所以我不明白导致这种情况发生的原因。帮助将不胜感激,如果您提供帮助,您是否还可以解释导致此问题的原因以及您采取了哪些措施来解决问题?每次遇到问题我都不想问别人,我也想学习。
答案 0 :(得分:37)
在运行Lint检查后发生在我身上。尝试右键单击sherlock动作栏项目 - > Android工具 - >清除棉绒标记。
答案 1 :(得分:20)
使用支持jar中提供的ActivityCompat。
答案 2 :(得分:7)
由于您使用的是最低API级别7,并且invalidateOptionsMenu()在API级别11之前不存在,因此您无法在没有错误的情况下覆盖它,因为如果设备运行API级别7,则该功能不均匀在基类中可用,并且不能覆盖不存在的函数。
答案 3 :(得分:1)
所有这些答案都是错的除了dbrown0708答案,但我会宣布更多
您可以使用ActivityCompat在较低的API中使用invalidateOptionMenu,如支持库v4中提供的那样
语法为invalidateOptionsMenu(Activity activity);
代码是
ActivityCompat.invalidateOptionsMenu(this);
在API级别11级
invalidateOptionsMenu();
答案 4 :(得分:0)
尝试使用 import android.support.v4.app.Fragment; 作为您的库