Impossible de trouver Theme.AppCompat.Light pour la nouvelle prise en charge d'ActionBar Android


354

J'essaie d'implémenter la nouvelle bibliothèque de support ActionBar qui a été publiée par Google il y a quelques jours. Dans le passé, j'ai réussi à implémenter ActionBarSherlock sans aucun problème en utilisant la même méthode répertoriée sur la page de configuration de la bibliothèque de support de développeur Google - en utilisant le guide sur la façon d'inclure les ressources (qui est similaire à la façon dont ActionBarSherlock l'a fait). J'ai également le projet de bibliothèque chargé dans mon propre projet en tant que bibliothèque.

Je peux dire que la bibliothèque se charge bien. Lorsque, au lieu d'étendre Activity sur mon MainActivity.java, je l'ai modifié pour étendre ActionBarActivity (conformément aux instructions de Google), aucune erreur ne se produit - et il importe correctement.

J'ai même essayé sans passer par le fichier style.xml et en ajoutant @style/Theme.AppCompat.Lightdirectement dans le AndroidManifest.xml pour les deux <application>et <activity>avec android:theme="@style/ThemeAppCompat.Light"toutes les tentatives résultant de la même erreur.

Maintenant, le problème est que je ne peux pas le faire changer le thème, et encore moins construire sans lancer d'erreur. Voici l'erreur que je reçois, suivie du fichier style.xml que j'ai modifié pour utiliser le nouveau thème.

J'ai une expérience modérée avec les applications Android et j'exécute Eclipse avec la dernière version des bibliothèques de support et du SDK compilant avec l'API 18 (Android 4.3).

Erreur reçue pendant la génération

erreur: erreur lors de la récupération du parent pour l'élément: aucune ressource trouvée correspondant au nom donné '@ style / Theme.AppCompat.Light'. styles.xml / ActBarTest / res / values ​​ligne 3 Problème Android AAPT

style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.ProsoftStudio.ACTest" parent="@style/Theme.AppCompat.Light">
    </style>
</resources>

Aucune suggestion? Cela n'a jamais été un problème avec ActionBarSherlock. Je souhaite travailler sur l'utilisation de cette nouvelle bibliothèque de support. Il semble presque que le .jar se charge, mais pas les ressources.


1
Essayez de nettoyer le projet, vous devrez peut-être recharger les dépendances afin que les styles d'AppCompact puissent également se recharger
TheWizKid95

2
@ TheWizKid95 J'ai fait un nettoyage sur mon application que j'essaye d'implémenter et sur la bibliothèque. Aucun des deux n'a entraîné de changement de code selon Eclipse et n'a résolu aucun des problèmes.
Brandon Enriquez

Avez-vous ajouté une bibliothèque de support avec Resources? Ajouter un pot aux libs ne suffit pas.
Gabriele Mariotti

@GabrieleMariotti Oui, j'ai ajouté les ressources ainsi qu'une bibliothèque de projet spécialement selon les instructions de Google.
Brandon Enriquez

Ce qui a fonctionné pour moi, c'était de l'ajouter en tant que projet à l'espace de travail. L'importation du pot et son ajout à buildpath n'ont pas fonctionné.
Johan

Réponses:


386

Vous devez faire ensuite:

  1. File->Import (android-sdk\extras\android\support\v7). Choisissez "AppCompat"
  2. Project-> properties->Android. Dans la section bibliothèque "Ajouter" et choisissez "AppCompat"
  3. C'est tout!

Remarque: si vous utilisez "android: showAsAction" dans l'élément de menu, vous devez modifier le préfixe android comme dans l'exemple http://developer.android.com/guide/topics/ui/actionbar.html


65
Cela ne fonctionne pas pour moi. Je fais exactement ce qui est écrit ici, mais je me retrouve avec des centaines de Aucune ressource trouvée qui correspond aux erreurs de nom. Les ressources qui manquent sont des styles qui sont inclus à partir de l'API 11 et au-dessus, mais cette chose devrait fonctionner à partir de l'API 7. Y a-t-il une connexion qui me manque!?!
apocalypz

5
Ayant un problème similaire, le thème Theme.AppCompat.Light.NoActionBar n'existe pas dans ma bibliothèque appcompat.
JMRboosties

9
Sous File-Import, je ne trouve pas 'android-sdk'. Je ne vois que 'andoird'. N'importe qui?
shahar eldad

2
apocalypz, je pense que vous manquez les ressources parce que vous avez importé la bibliothèque sans les ressources. voici le lien pour "Ajouter des bibliothèques avec des ressources" developer.android.com/tools/support-library/…
Hades200621

1
En suivant les étapes ci-dessus + ajouter sdk \ extras \ android \ support \ v13android-support-v13.jar au répertoire libs du projet résoudra le problème.
Wasim A.

119

Si, comme moi, vous suivez le didacticiel Android sur http://developer.android.com/training/basics/actionbar/setting-up.html et continuez d'obtenir cette erreur, essayez de changer le AppBaseThemestyle dans tous les styles.xmlfichiers. En détail:

  1. Dans le fichier, res/values/styles.xmlchangez la ligne:

    <style name="AppBaseTheme" parent="android:Theme.Light">

    à:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. Dans le fichier, res/values-v11/styles.xmlchangez la ligne:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">

    à:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. Dans le fichier, res/values-v14/styles.xmlchangez la ligne:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

    à:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

Maintenant, l'application devrait fonctionner correctement.


11
Oui, cela a fonctionné pour moi. L'élément clé à noter est que dans l'attribut parent "android:" les préfixes construits dans les thèmes (styles) tandis qu'une valeur sans ce préfixe fait référence à vos propres styles, ou aux styles dans toutes les bibliothèques auxquelles vous avez lié ... comme android-support -v7-appcompat.
John Bentley

Il n'y res/values/styles.xmlen a pas dans un nouveau projet Android. Du moins pas lorsque vous le créez avec android create project.
weberc2

Vous obtenez le styles.xml lorsque vous créez le projet avec l'assistant, sélectionnez l'application plein écran et masquez les contrôles
JJ_Coder4Hire

8
Rien ne fonctionne pour moi ... 4 heures déjà gaspillées. Je reçois toujours Aucune ressource trouvée qui correspond au nom donné (dans 'theme' avec la valeur '@ style / Theme.AppCompat.Light'). Sur le point d'abandonner.
c.fogelklou

2
Je venais juste de les changer dans l'autre sens, et c'était en effet ainsi que les choses devaient être dans mon projet.
John

28

Il s'agit d'un problème qui peut se produire dans Android Studio si vous modifiez des modules de structure de projet. Dans ce cas, vous devrez peut-être ajouter à nouveau les dépendances. Dans un éditeur de texte, éditez le fichier 'build.gradle' pour inclure les dépendances requises:

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

Cela devrait mettre à jour votre fichier '{your_project_name} .iml' avec les composants lib:

<orderEntry type="library" exported="" name="appcompat-v7-19.0.1" level="project" />

1
Gardez à l'esprit qu'il existe 2 fichiers .iml. Celui avec les entrées de la bibliothèque est contenu dans le sous-dossier du projet et a un nom de fichier en minuscule.
David Douglas

2
Cela a résolu mon problème. l'ajout de l'appcompat aux dépendances dans le build.gradle interne a fonctionné. Je regrette de dire que je l'ai édité manuellement pour correspondre à un autre projet qui a cassé les choses!
JJ_Coder4Hire

28

Je partagerai mon expérience avec ce problème. Je devenais fou à cause de cela, mais j'ai découvert que le problème était un bug avec Eclipse lui-même, plutôt que mon code: dans eclipse, impossible de référencer un projet de bibliothèque Android dans un autre projet Android

Donc, si vous avez la bibliothèque de support Android sur votre lecteur C: et votre projet dans le lecteur D: sur votre ordinateur, Eclipse ne fonctionnera pas correctement et ne saura pas où se trouve la bibliothèque de support Android (la coche verte se transforme en croix rouge ). Pour résoudre ce problème, vous devez déplacer les deux projets sur le même disque dur.


4
Je vous remercie. C'était le cas de ma situation. À l'étape 1 (Fichier-> Importer (android-sdk \ extras \ android \ support \ v7). Choisissez "appcompat"), il faut cocher "copier dans l'espace de travail".
Hong

J'ai fait face à un problème similaire. Merci beaucoup, c'était vraiment difficile
SILINIK

Même problème dans AndroidStudio. Je viens de passer environ 3 heures à essayer de comprendre cela. Merci!
Ruben Martinez Jr.

Jup. Peut confirmer ceci ... IntellJ a exactement le même problème, au moins avec AppCompat ... a perdu 4 heures sur ce problème.
puelo

C'était aussi la solution pour moi. Copier le projet appcompat_v7 sur le même lecteur que le projet cible et l'ajouter en tant que lib l'a fait fonctionner sans problème.
MayaPosch

23

J'ai fait ce qui suit dans Eclipse avec le projet Android Support Library ( APL ) et le projet principal ( MP ):

  1. Assuré APL et MP avaient les mêmes minSdkVersionet targetSdkVersion.

  2. APL ajouté comme dépendance de construction pour MP :

    1. Aller dans "Propriétés> Chemin de génération Java" de MP , puis

    2. Sélectionner l'onglet "Projets" et ajouter APL .

  3. Dans les propriétés de MP , sous "Android", ajout d'une référence à APL sous bibliothèque.

1 et 2 ont fait fonctionner correctement les références aux classes Java ... mais j'ai quand même vu l'erreur dans le manifest.xmlfor MP lorsque j'essayais de faire référence à @style/Theme.AppCompat.Lightpartir d' APL . Cela n'a disparu que lorsque j'ai effectué l'étape 3.


9
Utilisez certainement "@ style / Theme.AppCompat ..." plutôt que "@android: style / Theme.AppCompat ...". Ce plus # 3 de cette réponse a résolu mon problème.
BeccaP

Le point 2 semble incorrect. Cela conduit à un message de journal des erreurs de construction, comme décrit et corrigé ici: stackoverflow.com/questions/18421274/…
OneWorld

18

C'est un peu tard mais voici comment je le fais dans AndroidStudio!

Faites un clic droit sur l'application pour accéder aux propriétés Faites un clic droit sur l'application pour accéder aux propriétés

Allez dans Dépendances et cliquez sur le signe '+' et choisissez la dépendance de la bibliothèque Allez dans Dépendances et cliquez sur le signe '+' et choisissez la dépendance de la bibliothèque Choisissez appcompat-v7 Choisissez appcompat-v7


12

Solution IntelliJ IDEA.

1. Exécutez Android SDK Manager et installez le dernier SDK et Android Support Libarary . La version du SDK et d'Android Support Libarary devrait être la même ! 23 dans mon cas. Une autre variante vous donnera les erreurs. 2. Remplacez la version SDK de votre projet IDEA par la dernière que vous avez installée à l'étape précédente. (ps. vous ne pouvez pas utiliser Maven).
entrez la description de l'image ici

entrez la description de l'image ici

3. Ajoutez un nouveau module à partir d'une source existante à votre projet IDEA.
entrez la description de l'image ici

4. Ajoutez le projet AppCompat. !!! Devrait aussi être sous le dernier SDK! (ps. Dites «Oui» n'importe où au cours de cette étape)
entrez la description de l'image ici

5. Ouvrez les paramètres de votre module de projet principal et ajoutez-y les 3 dépendances suivantes:

5.1. Dépendance du module. Choisissez android-support-v7-appcompat
entrez la description de l'image ici

5.2. 2 pc. Dépendances de la bibliothèque. Ajouter android-sdk \ extras \ android \ support \ v7 \ appcompat \ libs \ android-support-v4.jar et android-support-v4 \ android-support-v7-appcompat.jar
entrez la description de l'image ici

Au total, ce sera:
entrez la description de l'image ici

6. Très important !!!
Ajoutez un thème avec le préfixe @style (pas un autre!) .
entrez la description de l'image ici



Solution Android Studio.

1. Exécutez Android SDK Manager et installez le dernier SDK et Android Support Libarary . La version du SDK et d'Android Support Libarary devrait être la même ! 23 dans mon cas. Une autre variante vous donnera les erreurs.
entrez la description de l'image ici

2. Ajouter à côté de build.gradle

dependencies {
    compile 'com.android.support:appcompat-v7:23.0.1'
} 

PS Si vous êtes nouveau dans le développement Android, je vous recommande fortement de passer à Android Studio & Gradle dès maintenant - vous obtiendrez le moyen le plus simple de gérer votre application Android.


Meilleure réponse que j'ai jamais trouvée dans SO à propos d'Android
Alex Jolig

10

Pour Android Studio 1.2.2

Supprimez "android" de la parentvaleur d'attribut:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

7

vous avez besoin de la référence $ ANDROID_SDK / extras / android / support / v7 / appcompat


Cela vous dérange-t-il d'aller plus en détail sur la façon de le référencer exactement? J'ai déjà référencé ce dossier exact comme indiqué dans les instructions sur les développeurs Android. J'ai suivi les instructions exactement comme indiqué sur leur site Web. Je peux dire qu'il est référencé au moins partiellement car ActionBarActivity est étendu sans erreur.
Brandon Enriquez

3
référence en appcompattant que bibliothèque Android, votre ressource de projet principale peut trouver un thème dans appcompat
Crossle Song

Cela a fait l'affaire. Je le faisais auparavant dans le Java Build Path.
Brandon Enriquez

5

Pour IntelliJ IDEA ou Android Studio:

Ajoutez ceci au fichier de construction app.gradle

dependencies {
    compile "com.android.support:appcompat-v7:21.0.+"
} 

Remplacez -v:xx.0+, avec votre cible de build, si vous avez 19 plates-formes, cela doit être comme:

dependencies {
    compile "com.android.support:appcompat-v7:19.0.+"
}

3

Suivez les étapes de @rcdmk. Supprimez le support Android v4.jar dans VOTRE projet. Il entre en conflit avec la nouvelle version mise à jour trouvée dans appcompat.


3

J'ai eu le même problème et j'ai perdu mes 4-5 heures pour trouver une solution. Mon problème a été résolu avec;

  1. Dans le gestionnaire du SDK, supprimez les packages "Android Support Library" et "Android Support Repository".
  2. Réinstallez «Android Support Library» et «Android Support Repository»
  3. Supprimez "android-support-v7-appcompat" ou "appcompat_v7 ce que vous avez d'autre dans votre projet.
  4. Importez android-support-v7-appcompat depuis "adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat"
  5. Sélectionnez votre projet et dans le fichier, choisissez les propriétés et recherchez le chemin de génération Java, puis dans l'onglet "Projet", supprimez quoi d'autre et ajoutez. et vous devez voir "android-support-v7-appcompat", sélectionnez-le et ajoutez-le à l'onglet Projet.
  6. Vérifiez votre fichier project.properties sous vos fichiers Project, vous verrez comme ceci; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat puis vérifiez le fichier AndroidManifest.xml si la cible est 21 ou ce que vous avez choisi d'autre. Vérifiez également la référence de la bibliothèque comme celle que vous avez choisie auparavant.

J'espère que vous trouverez votre solution.


1
Ce qui m'a aidé a été de mettre à niveau ma bibliothèque de support Android à l'aide du gestionnaire SDK, de supprimer l'ancienne bibliothèque appcompat de l'espace de travail, de réimporter la bibliothèque appcompat récemment mise à jour (et de la copier dans l'espace de travail), puis de la construire.
Varun

3

Mon problème est résolu via les étapes suivantes

  1. Fichier-> Importer (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. Cliquez avec le bouton droit sur Projet-> propriétés-> Android. Dans la section bibliothèque "Ajouter" et choisissez la bibliothèque d'application compatible qui est incluse à l'étape 1
  3. Supprimer tous les fichiers du répertoire libs du projet
  4. ajouter le fichier suivant au répertoire libs du projet <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    Redémarrez Eclipse si nécessaire. C'est ça. Votre problème devrait disparaître.


heureux que cela aide quelqu'un :)
Wasim A.

2

travaux:

<style name="MyApp" parent="Theme.AppCompat.Light">
</style>
<style name="MyApp" parent="@style/Theme.AppCompat.Light">
</style>
<style name="Theme.AppCompat.Light.MyApp">
</style>

2

Étant donné que la dialouge d'importation est différente dans Android Studio 1.0.1, je ne pouvais pas faire fonctionner la version Svyatoslav Lobachs.

Au lieu de cela, j'ai téléchargé "Android Support Repository" dans le SDK Manager. Puis ajouté

dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}

à build.gradle. A travaillé pour moi.



1

J'ai rencontré le même problème que l'OP après avoir cliqué avec le bouton droit sur mon projet et sélectionné Fermer les projets non liés .

Dans mon cas, j'ai résolu le problème en rouvrant le projet appcompat_v7 et en nettoyant / reconstruisant les deux projets.


1

Cela m'est arrivé quand Eclipse (Luna) / AndroidSDK (pas Android Stduio) ont été utilisés avec les derniers outils et bibliothèque le 14 janvier 2015 pendant le projet comme HelloWorld. Lorsque j'ai installé ces outils et fait de HelloWorld la première application, j'ai accepté tous les paramètres par défaut. - C'est le problème dans mon cas.

Vérifiez d'abord si la bibliothèque "Android Support Library" est installée ou non. Sinon, installez-le. Il n'est pas installé par défaut. Vous pouvez tout faire dans "Android SDK manager" disponible dans le menu.

(Gestionnaire de SDK Android -> Extra -> Bibliothèque de support Android)

Bénédictions, (un débiteur) <> <


1

Solution la plus rapide:

clic droit sur le projet -> Outils Android -> Ajouter une bibliothèque de support ..

entrez la description de l'image ici


0

J'ai fait une erreur vraiment stupide pour ça. Quand je recevais la même erreur à chaque fois, je ne pouvais pas comprendre ce qui n'allait pas. puis il m'a cliqué qu'une fois que j'ai fermé tous les projets dans mon espace de travail et c'était le moment depuis que tous les problèmes ont commencé. AINSI vérifiez simplement si votre "appcompat_v7" n'est pas fermé. Si c'est le cas, ouvrez le projet en double-cliquant, puis nettoyez et générez à nouveau votre projet. Dans mon cas, les erreurs ont disparu. Bon codage!


0

Je ne sais pas si la bibliothèque de support v13 était disponible lorsque cette question a été publiée, mais au cas où quelqu'un aurait encore du mal, j'ai vu que l'ajout android-support-v13.jarrésoudrait tout. Voici comment je l'ai fait:

  1. Clic droit sur le projet -> Propriétés
  2. Sélectionnez Java Build Path dans la table des matières de gauche
  3. Accédez à l'onglet Bibliothèques
  4. Bouton Ajouter des pots externes et sélectionnez <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

Pour Android Studio ou IntelliJ, il vous suffit de mettre à jour vos dépendances dans gradle.build. J'ai utilisé ce qui suit:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.2'
}

0

Je ne sais pas combien d'entre vous l'ont remarqué. Bibliothèque de support "appcompat_v7" et votre projet devrait être dans un même répertoire (je veux dire le répertoire de l'espace de travail). Ne nettoyez pas votre projet jusqu'à ce qu'il soit exempt d'erreur, sinon vous aurez du mal avec R.java


0

Vous feriez mieux de créer un nouveau projet avec n'importe quel nom, puis utilisez appcompat_v7 ce programme make new.

Right Click Project-> properties->Android

Dans la section bibliothèque Addet choisissez bibliothèque appcompat.


0

dans eclipse, faites un clic droit sur votre projet-> sélectionnez le chemin de génération puis sélectionnez configurer le chemin de génération. dans la fenêtre, sélectionnez le fichier jar que vous souhaitez et actualisez votre projet


0

La solution acceptée fonctionnait pour moi une fois, mais pas maintenant. J'ai dû recréer un hello-world du même genre (!) Dans un nouvel espace de travail, le faire compiler, puis copier tous les répertoires, y compris .hget .hgignore. hg diffmontre:

-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="21" />

Binary file libs/android-support-v4.jar has changed

Il semble qu'Eclipse veuille compiler pour l'API 21 et ne fasse rien avec l'API 19. Sombre.


0

Si vous avez ajouté la bibliothèque appCompat et que vous avez également donné une référence appropriée à appCompat à partir de l'emplacement du SDK, essayez "invalider les caches / redémarrer" .
Vous pouvez le trouver dans le menu "Fichier" d'Android Studio.


0

Dans mon cas, le problème s'est produit car je voulais utiliser un SDK qui n'inclut pas la bibliothèque requise. Quand j'ai augmenté le min. Niveau SDK le problème a disparu. Bien sûr, l'inclusion directe de la bibliothèque elle-même devrait également supprimer l'erreur.


0

Oublie tout. Utilisez simplement la bibliothèque compatible avec les applications téléchargée à l'aide d'Android Studio. Il a toutes les définitions manquantes. Que vous utilisiez ou non Eclipse.


0

J'ai eu le même problème et même après avoir importé / ajouté un bocal / bibliothèque comme mentionné dans les réponses, cela ne résoudrait pas l'erreur. Par frustration, je viens de créer un nouvel espace de travail et créé un nouveau projet Android et il a automatiquement importé appcompat_v7 et il n'y a eu aucune erreur lors du nettoyage et de la construction. N'a pas eu à importer manuellement un seul pot / bibliothèque. Juste pour info, j'utilise eclipse Mars.1 Release (4.5.1) et faisais face au même problème à chaque fois que je créais un nouveau projet Android.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.