web-dev-qa-db-fra.com

Erreur dans le fichier styles_base.xml - Android app - Aucune ressource trouvée ne correspond au nom donné "Android: Widget.Material.ActionButton".

Ok, je suis donc un débutant en développement Android et je viens de créer l'application hello world. Mais cela me donne des erreurs dans le fichier styles_base.xml de la bibliothèque appcompat_v7.

error: Erreur lors de l'extraction du parent pour l'élément: aucune ressource trouvée ne correspond au nom donné 'Android: Widget.Material.ActionButton'. styles_base.xml/appcompat_v7/res/values-v21
Problème AAPT

Comment puis-je prendre soin de cette erreur? Aussi, pourquoi la bibliothèque appcompat_v7 est-elle utilisée alors que je ne la veux pas? Je veux dire, comment créer l'application hello world sans utiliser la bibliothèque appcompat_v7?

C'est le fichier styles_base.xml qui donne l'erreur ci-dessus.

<resources>

<!-- Like in themes_base.xml, the namespace "*.AppCompat.Base" is used to
 define base styles for the platform version. The "*.AppCompat"
 variants are for direct use or use as parent styles by the app. -->
<eat-comment/>

<style name="Base.Widget.AppCompat.ActionBar.TabView"
       parent="Android:Widget.Material.ActionBar.TabView">
</style>

<style name="Base.Widget.AppCompat.Light.ActionBar.TabView"
       parent="Android:Widget.Material.Light.ActionBar.TabView">
</style>

<style name="Base.Widget.AppCompat.ActionBar.TabText"
       parent="Android:Widget.Material.ActionBar.TabText">
</style>

<style name="Base.Widget.AppCompat.Light.ActionBar.TabText"
       parent="Android:Widget.Material.Light.ActionBar.TabText">
</style>

<style name="Base.Widget.AppCompat.Light.ActionBar.TabText.Inverse"
       parent="Android:Widget.Material.Light.ActionBar.TabText">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Menu">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Title">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Subtitle">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Title.Inverse">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle.Inverse"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Title"
       parent="Android:TextAppearance.Material.Widget.ActionMode.Title">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Subtitle"
       parent="Android:TextAppearance.Material.Widget.ActionMode.Subtitle">
</style>

<!-- Action Button Styles -->

<style name="Base.Widget.AppCompat.ActionButton"
       parent="Android:Widget.Material.ActionButton">
</style>

<style name="Base.Widget.AppCompat.ActionButton.CloseMode"
       parent="Android:Widget.Material.ActionButton.CloseMode">
</style>

<style name="Base.Widget.AppCompat.ActionButton.Overflow"
       parent="Android:Widget.Material.ActionButton.Overflow">
</style>

<!--
    Widget.AppCompat.Toolbar style is purposely ommitted. This is because the support
    Toolbar implementation is used on ALL platforms and relies on the unbundled attrs.
    The supporting Toolbar styles below only use basic attrs so work fine.
-->

<style name="Base.Widget.AppCompat.Toolbar.Button.Navigation"
       parent="Android:Widget.Material.Toolbar.Button.Navigation">
</style>

<style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Title"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Title">
</style>

<style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
       parent="Android:TextAppearance.Material.Widget.ActionBar.Subtitle">
</style>

<!-- Spinner Widgets -->

<style name="Base.Widget.AppCompat.ListView.DropDown"
       parent="Android:Widget.Material.ListView.DropDown"/>

<style name="Base.Widget.AppCompat.DropDownItem.Spinner"
       parent="Android:Widget.Material.DropDownItem.Spinner"/>

<style name="Base.Widget.AppCompat.Spinner" parent="Android:Widget.Material.Spinner" />

<style name="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" parent="Android:Widget.Material.Spinner">
    <item name="spinnerMode">dropdown</item>
    <item name="disableChildrenWhenDisabled">true</item>
    <item name="popupPromptView">@layout/abc_simple_dropdown_hint</item>
</style>

<style name="Base.Widget.AppCompat.ListView.Menu"
       parent="Android:Widget.Material.ListView" />

<!-- Popup Menu -->

<style name="Base.Widget.AppCompat.ListPopupWindow" parent="Android:Widget.Material.ListPopupWindow">
</style>

<style name="Base.Widget.AppCompat.PopupMenu" parent="Android:Widget.Material.PopupMenu">
</style>

<style name="Base.Widget.AppCompat.Light.PopupMenu"
    parent="Android:Widget.Material.Light.PopupMenu">
</style>

<style name="Base.Widget.AppCompat.PopupMenu.Overflow">
    <item name="Android:dropDownHorizontalOffset">-4dip</item>
    <item name="Android:overlapAnchor">true</item>
</style>

<style name="Base.Widget.AppCompat.Light.PopupMenu.Overflow">
    <item name="Android:dropDownHorizontalOffset">-4dip</item>
    <item name="Android:overlapAnchor">true</item>
</style>

<style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Large"
    parent="Android:TextAppearance.Material.Widget.PopupMenu.Large">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Small"
    parent="Android:TextAppearance.Material.Widget.PopupMenu.Small">
</style>

<style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"
    parent="Android:TextAppearance.Material.Widget.PopupMenu.Large">
</style>

<style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"
    parent="Android:TextAppearance.Material.Widget.PopupMenu.Small">
</style>

<!-- Search View result styles -->

<style name="Base.TextAppearance.AppCompat.SearchResult.Title"
       parent="@Android:TextAppearance.Material.SearchResult.Title">
</style>

<style name="Base.TextAppearance.AppCompat.SearchResult.Subtitle"
       parent="@Android:TextAppearance.Material.SearchResult.Subtitle">
</style>

<style name="Base.Widget.AppCompat.AutoCompleteTextView" parent="Android:Widget.Material.AutoCompleteTextView" />

<style name="Base.Widget.AppCompat.Light.AutoCompleteTextView" parent="Android:Widget.Material.AutoCompleteTextView" />

<!-- Progress Bar -->

<style name="Base.Widget.AppCompat.ProgressBar.Horizontal"
       parent="Android:Widget.Material.ProgressBar.Horizontal">
</style>

<style name="Base.Widget.AppCompat.ProgressBar"
       parent="Android:Widget.Material.ProgressBar">
</style>

<!-- TODO. Needs updating for Material -->
<style name="Base.Widget.AppCompat.ActivityChooserView" parent="">
    <item name="Android:gravity">center</item>
    <item name="Android:background">@drawable/abc_ab_share_pack_holo_dark</item>
    <item name="Android:divider">?attr/dividerVertical</item>
    <item name="Android:showDividers">middle</item>
    <item name="Android:dividerPadding">6dip</item>
</style>


Voici le code que j'utilise:

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
   }
}
52
divinesense

Accédez au répertoire Android SDK installé, puis aux extras> Android> support> v7> appcompat.

dans mon cas: D:\Logiciel\adt-bundle-windows-x86-20140702\sdk\extras\Android\support\v7\appcompat

une fois dans le dossier appcompat, recherchez le fichier project.properties, puis remplacez la valeur par défaut de 19 par 21 comme suit:

target=Android-21.

Enregistrez le fichier, puis actualisez votre projet.

Puis nettoyez le projet: Dans l'onglet Projet, sélectionnez l'option Nettoyer puis sélectionnez votre projet et nettoyez ...

Cela résoudra l'erreur. Si ce n'est pas le cas, assurez-vous que votre projet cible également l'API 21 ou supérieure (mêmes étapes qu'avant et facilement oubliés lors de la mise à niveau d'un projet qui cible une version plus ancienne). Profitez du codage ...

114
Sachin Kundapur

Je viens de résoudre ces erreurs exactes moi-même. Il semble que la clé réside dans le fait que votre fichier project.properties de votre projet de bibliothèque appcompat doit utiliser la version la plus récente de l'API pour laquelle votre projet appcompat a été écrit (dans votre cas, il ressemble à v21). Le moyen le plus simple que j'ai trouvé est de rechercher le plus haut dossier 'values-v **' dans le dossier res (par exemple, values-v21).

Pour clarifier, en plus des instructions de Configuration de la bibliothèque de support , votre fichier appcompat/project.properties devrait contenir: target=Android-21 (le mien en contient 19 à la place).

Assurez-vous également que la "plate-forme SDK" correspond à cette version (par exemple, pour l'installation de la v21 Android 5.0 plate-forme SDK).

Voir aussi appcompat-v7: 21.0.0 ': Aucune ressource trouvée ne correspond au nom donné: attr' Android: actionModeShareDrawable '

Sinon, si vous ne voulez pas utiliser appcompat du tout, tout ce que vous avez à faire est de cliquer droit sur votre projet> Propriétés> Android> Bibliothèque> Supprimer la référence à appcompat. Les erreurs apparaîtront toujours pour le projet appcompat, mais ne devraient pas affecter votre projet par la suite.

42
Ben

Pré-requis

Assurez-vous d'avoir téléchargé les derniers extras ainsi que le SDK Android 5.0 via le SDK-Manager.enter image description here

8
back track

Cela m'est arrivé après avoir "mis à jour" dans le SDK 5.0 et voulu créer une nouvelle application avec bibliothèque de support.

Dans les deux projets (fichier project.properties) de celui que vous souhaitez utiliser, la bibliothèque de support et la bibliothèque de support elle-même doivent être définies de la même façon target

par exemple. pour mon cas cela a fonctionné

  1. Dans le projet Android-support-v7-appcompat Remplacez project.properties par target=Android-21
  2. CleanAndroid-support-v7-appcompat Dans mon projet (où je souhaite une bibliothèque de support)
  3. Dans mon projet, modifiez project.properties en target=Android-21 et Android.library.reference.1=../Android-support-v7-appcompat (ou ajoutez une bibliothèque de prise en charge dans les propriétés du projet).
  4. Nettoyer le projet
6
pajus_cz

Ma cible de construction de projet d'Android-support-v7-appcompat était avec l'API 19 et l'a simplement remplacée par l'API 20.

Faites un clic droit sur Android-support-v7-appcompat projet de bibliothèque. Accédez aux propriétés. Cliquez sur Android. Modifiez la construction du projet. Cible de Android 4.x.x à Android 5.0.

Cela m'a aidé, espérons-le, à aider les autres aussi.

4
Somir Saikia

Votre version de compilation Sdk est définie sur 21. changez-le en 20 ou less. Son présent dans build.gradle dans Android studio. Puis nettoyez le projet et reconstruisez-le

4
Panther

J'ai suivi toutes ces instructions, y compris celles d'Android. Ce qui a finalement été résolu pour moi a été de changer la cible de génération de projet du niveau API au niveau 21 dans mon projet.

J'utilise l'API 22 (Android 5.1.1), qui est plus récente que lorsque ces autres réponses ont été écrites. Vous ne pouvez donc pas définir target = 21 dans la bibliothèque de support comme vous le pouviez il y a 6 mois.

2
Walker Rowe

J'écris une application au niveau 21 de l'API, j'ai essayé tout ce qui précède, mais cela n'a pas fonctionné. Enfin, j'ai supprimé Values-v23 de appcompat_v7.It a fonctionné.

2
shiv

Pour mon entraînement Android Studio. J'ai constaté que cela se produisait lorsque je modifiais manuellement Compiler SDK Version de API23 (Android 6) en API17 (Android 4.2) manuellement dans le paramètre Structure du projet et en essayant de modifier du code dans les fichiers de mise en page.

J'ai mal compris que je devais le changer manuellement, même sur Nouveau projet, j'ai déjà choisi le "Minimum SdK" pour être 4.2.

Résolvez-le en le remplaçant par API23 et il pourra toujours fonctionner sous Android 4.2. ^^

veuillez ouvrir votre répertoire Android sdk puis,

sur mon chemin:

E:\Android\sdk\extras\Android\support\v7\appcompat

alors vous pouvez voir le fichier "project.properties"

ouvrez-le et changez la cible "target = Android-19" en "target = Android-23"

sa a fonctionné pour moi.

merci: https://stackoverflow.com/a/27243716/4140589

0
jesto paul
Download the latest "sdk platform" and "sdk build tools" of same version like 23.* for 
both from "sdk Managar".

(Pour référence, voir l'image hébergée ci-dessus de piste arrière ). Cliquez ensuite avec le bouton droit de la souris sur votre projet -> Propriétés -> Android -> dans "Propriétés de construction du projet", sélectionnez "Niveau de l'API" 23 ou le dernier que vous avez mis à jour. Puis nettoyez votre projet une fois.

Note: But all three should be in same version.
0
anand krish

Après avoir modifié la cible en version correspondante (comme expliqué par Ben), si des erreurs subsistent, exécutez simplement "Nettoyer" sur le projet pour supprimer les erreurs de ressources.

0
Ravi

Eh bien, il m'a fallu 2 jours pour comprendre le problème. En bref, par défaut, vous devez simplement conserver la version maximale au niveau le plus élevé que vous avez téléchargé, indique le niveau 23 (Android M) dans mon cas.

sinon vous obtiendrez ces erreurs. Vous devez accéder aux propriétés de projet de votre projet et à appcompat pour modifier la version cible.

soupir.

0
Alfred Loh