主题ActionBarSherlock给出了api级错误

时间:2013-03-05 10:38:55

标签: android actionbarsherlock

我将我的项目从Android 4.2更新到Android 4.2.2,我突然在styles.xml中收到此错误:

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
   <!-- Requires level 11. Current: 7 --> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>

我该如何解决这个问题?根据ABS文档,这是应该如何做的。请参阅:http://actionbarsherlock.com/theming.html

4 个答案:

答案 0 :(得分:11)

我尝试重新启动,但最终需要清理项目:点击“Project-&gt; Clean ...”

每次保存styles.xml时都会出现错误。目前,我在编辑该文件时暂时将我的最低API级别设置为11以避免错误,然后将其重置为低清并在我想要在我的低API级别仿真器上运行时进行清理。

编辑:如果你不喜欢将你的最低SDK版本人为地高,那么我也可以将它更改为14(其他一些高数字),​​保存AndroidManifest.xml,更改它马上回来,再次保存。

答案 1 :(得分:10)

我使用了建议的Eclipse快速修复程序(带下划线的元素上的CTRL-1),并添加了警告抑制工具:ignore =“NewApi”

<item name="android:actionBarStyle" tools:ignore="NewApi">@style/Widget.Styled.ActionBar</item>

这样您就不必忽略整个Lint警告,这在其他情况下可能很方便,并且您可以编译项目而无需在每次编辑文件时重新调整目标API。

更新:正如评论中指出的greg7gkb:不要忘记命名空间声明(xmlns:tools="schemas.android.com/tools")。

答案 2 :(得分:1)

最终,你真的应该在API特定的styles.xml文件中添加给你错误的属性。

这个SO答案比我更好地描述了这个:android:actionBarStyle requires API level 11

我认为所有其他答案都不是修复,而是解决方法(颠覆错误,但最终不修复错误)。

答案 3 :(得分:0)

在Intellij IDEA(可能也是eclipse)中,您可以通过添加

来抑制整个文件的API警告
<!--suppress AndroidLintNewApi -->

在声明架构之前。所以你的xml文件看起来像这样:

<!--suppress AndroidLintNewApi -->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    < ... />
</resources>