2013-03-05 2 views
10

I mis à jour mon projet à partir d'Android 4.2 à Android 4.2.2 et je reçois tout à coup cette erreur dans mon styles.xml:thématisation ActionBarSherlock donne erreur de niveau api

<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> 

Comment puis-je résoudre ce problème? Selon les documents de l'ABS, c'est ainsi que cela devrait être fait. Voir: http://actionbarsherlock.com/theming.html

+0

vérifiez la 'minSdkVersion' dans votre fichier manifeste ... –

+0

quelle est votre version cible et minimum sdk dans le manifeste? – waqaslam

+0

Cela a déjà fonctionné avant 4.2 – Klaasvaak

Répondre

11

J'ai essayé de redémarrer, mais il me fallait finalement nettoyer le projet: Cliquez sur « Projet-> Clean ... »

L'erreur est revenu chaque fois que je sauvé mon styles.xml. Pour le moment, je mets provisoirement à 11 le niveau de l'API minimum lors de la modification de ce fichier pour éviter les erreurs, puis je le réinitialise et le nettoie lorsque je veux l'exécuter sur mon émulateur low-API.

Edit: Si vous ne voulez pas quitter votre version min SDK artificiellement élevé, il travaille aussi pour moi de changer à 14 (un autre grand nombre), économiser AndroidManifest.xml, changer le droit de retour, et enregistrer à nouveau

+0

Vous avez raison. A chaque modification, le fichier styles.xml déclenche l'erreur. Lorsque vous nettoyez le projet (pas de génération), l'erreur disparaît. Lorsque vous générez le projet avec le fichier styles.xml fermé, l'erreur disparaît. Vous pouvez donc le construire avec un niveau d'API inférieur et il doit simplement être fermé. – Klaasvaak

+0

@jgiles, utilisez-vous OSX? Je rencontre le même problème en cours d'exécution ADT v21.1.0-569685 sur OSX.Mon collègue sur Windows ne voit pas de telles erreurs sur Windows, exécutant exactement le même projet. – nipponese

+0

Non, je cours sous Ubuntu. – jgiles

10

J'ai utilisé la solution rapide suggéré d'Eclipse (CTRL-1 sur l'élément souligné) et vient d'ajouter la suppression d'avertissement outils: ignore = "NewApi"

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

De cette façon, vous n'avez pas ignorer l'avertissement Lint entier, ce qui peut être pratique dans d'autres cas, et vous pouvez compiler le projet sans avoir à réajuster l'API cible chaque fois que vous éditez le fichier.

Mise à jour: Comme greg7gkb souligné dans les commentaires: Ne pas oublier la déclaration d'espace de noms (xmlns:tools="schemas.android.com/tools").

+5

Solution idéale - merci. N'oubliez pas que vous devez également déclarer xmlns: tools = "http://schemas.android.com/tools" dans le fichier xml. – greg7gkb

+0

Ah merci pour le commentaire, greg7gkb. J'ai tendance à oublier les espaces de noms, surtout quand Eclipse les insère automagiquement;) – Patrick

+0

+1 pour la note qu'Eclipse peut l'insérer automatiquement via le correctif rapide. – Natix

0

Dans IntelliJ IDEA (éclipse sans doute aussi), vous pouvez supprimer les avertissements de l'API pour le fichier entier en ajoutant

<!--suppress AndroidLintNewApi --> 

Avant de déclarer le schéma. Donc, votre fichier xml serait alors ressembler à quelque chose comme ceci:

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

En fin de compte, vous devriez vraiment ajouter l'attribut qui vous donne l'erreur dans un fichier spécifique styles.xml API.

Cette réponse SO décrit cela beaucoup mieux que moi: android:actionBarStyle requires API level 11

Je pense que toutes les autres réponses ne sont pas fixes, mais contournements (subvertir l'erreur, mais finalement pas fixer).

Questions connexes