ActionBarSherlock主题化出现API级别错误

10

我将我的项目从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

请在您的清单文件中检查 minSdkVersion - Praful Bhatnagar
清单文件中你的目标版本和最低版本是多少? - waqaslam
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" /> 它之前在4.2上运行过。 - Klaasvaak
通过重新启动Eclipse,所有问题都神奇地解决了。 - Klaasvaak
通过重新启动Eclipse,一切问题都神奇地解决了。 - Klaasvaak
重启Eclipse对我没有用... - jgiles
4个回答

11
我尝试过重启,但最终需要清理项目:点击“项目->清理...”
每次保存styles.xml时都会出现错误。目前,我将我的最低API级别暂时设置为11,以避免出现错误,并在编辑完文件后将其重置并进行清理,然后再在低API级别的模拟器上运行。 编辑:如果您不喜欢将最小SDK版本人为地设得过高,则也可以像我一样将其更改为14(其他较高的数字),保存AndroidManifest.xml,然后立即更改回来并重新保存。

你是对的。每次编辑styles.xml都会触发错误。当你清理项目(不构建)时,错误就消失了。当你关闭styles.xml并构建项目时,错误也会消失。因此,你可以使用较低的API级别构建它,只要它被关闭即可。 - Klaasvaak
@jgiles,你在使用OSX吗?我在OSX上运行ADT v21.1.0-569685时遇到了同样的问题。我的同事在Windows上运行完全相同的项目时没有看到任何错误。 - nipponese

10

我使用了Eclipse建议的快速修复方法(在下划线元素上按CTRL-1),并添加了警告抑制tools:ignore="NewApi"

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

这种方法让你不必忽略整个Lint警告,这在其他情况下可能非常有用,而且你可以在每次编辑文件时无需重新调整目标API的情况下编译项目。

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


5
理想的解决方案 - 谢谢。请不要忘记在XML中声明xmlns:tools ="http://schemas.android.com/tools"。 - greg7gkb
啊,谢谢你的评论,greg7gkb。我经常忘记命名空间,特别是当Eclipse自动插入它们时 ;) - Patrick
+1 对于这个注释,Eclipse可以通过快速修复自动插入。 - Natix

1

最终,您确实应该在API特定的styles.xml文件中添加导致错误的属性。

这个SO答案比我更好地描述了这一点:android:actionBarStyle需要API级别11

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


0
在Intellij IDEA(可能也适用于eclipse)中,您可以通过添加来抑制整个文件的API警告。
<!--suppress AndroidLintNewApi -->

在声明模式之前,你的xml文件应该像这样:
<!--suppress AndroidLintNewApi -->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    < ... />
</resources>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接