web-dev-qa-db-fra.com

android exception Studio sdk version 22 lors du rendu: action_bar

Lorsque je crée un nouveau projet sur Android studio, cela ne pose aucun problème. Cependant, en regardant le activity_main.xml design c'est me montre ceci:

Problèmes de rendu Exception déclenchée lors du rendu: action_bar.

quand je change de sdk de niveau 22 à 21 depuis la page de conception Android studio ne montre rien

Comment puis-je résoudre ce problème? Ce n'est pas un problème important mais je me demandais comment puis-je résoudre ce problème.

51
Ali Aras

Oui, je devais simplement ajuster le niveau Android dans le menu déroulant. L'aperçu de l'onglet Conception de l'API de niveau 22 est cassé pour le moment. avec besoin du canal alpha. Je suis sûr que Google va le réparer lundi. :) enter image description here

96
Dave Fisher

ActionBar est déconseillé au profit de Toolbar, qui a été ajouté à l'API 21. Cependant, le thème de base de Android) Les modèles de Studio semblent toujours utiliser des thèmes basés sur ActionBar.

La solution ne consiste pas à rétrograder la version de vos outils de génération, mais à modifier le thème de base de votre application. Si vous rétrogradez vos outils de construction, vous ne bénéficierez plus de la prise en charge des dernières fonctionnalités ajoutées à Android 5.1 et versions ultérieures.

Votre thème de base est répertorié dans AndroidManifest.xml sous application/Android: theme.

Accédez à res/values ​​/ styles.xml et remplacez l'attribut parent par un thème de base différent, qui ne repose pas sur le ActionBar obsolète. Dans le cas peu probable où votre application s'appelle API 21+, vous pouvez utiliser Theme.Material. Sinon, vous devrez utiliser Theme.AppCompat.NoActionBar ou définir votre propre thème de base.

Voici un exemple de styles.xml:

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

Si vous l'utilisez, veillez à placer un élément de la barre d'outils dans vos présentations XML à l'endroit où vous souhaitez que le ActionBar apparaisse. Vous devrez personnaliser la barre d’outils avec des balises XML enfant. Je recommande d'utiliser le <include> tag. Comme il est indiqué dans la documentation de la barre d'outils, les nouveaux principes de conception de Google exigent un changement de style visuel:

Dans la version moderne Android, les développeurs d’UI devraient s’appuyer davantage sur une palette de couleurs visuellement distincte pour les barres d’outils que sur l’icône de leur application. L’utilisation de l’icône de l’application et du titre en tant que présentation standard est déconseillée sur les périphériques API 21 et plus récents. .

Android.support.v7.widget.Toolbar se trouve dans la bibliothèque de prise en charge des périphériques pré-API 21.

EDIT: Comme le souligne le premier commentaire, Google a créé un blog expliquant comment utiliser la nouvelle barre d’outils. http://Android-developers.blogspot.kr/2014/10/appcompat-v21-material-design-for-pre.html

20
colintheshots

Désolé pour le problème les gars. La raison du problème est que la bibliothèque de rendu tente maintenant d'utiliser davantage le code réel de la bibliothèque appcompat, afin d'être plus précis. Cependant, cela a révélé quelques bogues dans le Android Studio lorsque le projet n'est pas construit.

Il n'est pas nécessaire de mettre à jour vos fichiers de classement ni de modifier les styles comme le suggèrent certaines des réponses.

La solution de contournement consiste à créer le projet une fois, puis à actualiser le rendu en effaçant le cache. Voir l'image jointe pour l'icône d'actualisation qui efface le cache.

Refresh Button Location

17
Deepanshu

Cette réponse a fonctionné pour moi:

MyActivity extends AppCompatActivity

Au lieu de:

MyActivity extends ActionBarActivity   // now deprecated

Retournez à votre aperçu, videz le cache et actualisez!

4
Mark Keen

Après des jours de frustration, j'ai finalement découvert que la réponse se trouvait dans la version de build.gradle de mon module d'application! J'ai changé le buildToolsVersion de 22 à 21.1.2 pour résoudre correctement cette exception exacte comme la vôtre. Cela semble avoir quelque chose à voir avec API 22: Android 5.1 donne le hoquet pour le moment. Espérons que Google va le réparer bientôt.

Changer ces lignes dans le build.gradle m'a donné une solution rapide à ce problème:

Android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
}
1

Je l'ai corrigé en changeant buildToolsVersion "21.1.2", sur build.gradle(Module: app),

Ne pas utiliser buildToolsVersion "22"

0
Oscar

Veuillez utiliser la version API21 pour voir l'aperçu. Je suis sur mac et la construction 22 est en panne/ne fonctionne pas pour moi. Quand je suis revenu à la construction 21, je pouvais voir l'aperçu.!

0
Pranav2579

Il s'avère que vous ne pouvez pas utiliser buildToolsVersion "22" ou targetSdkVersion 22 car il ne parvient pas à rendre correctement. Il semble que l'application ne peut être restituée que lorsqu'elle est définie sur API 21 ou inférieure pour le moment, car je recevais la même erreur et dès que je l'ai modifiée à 21, elle a recommencé à fonctionner. Il suffit d'aller dans build.gradle (module: app) et de changer l'API à la dernière version d'API 21.

La résoudre:

Créer un nouveau dossier values-v19

Créez un fichier styles.xml dans ce dossier

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- For actionBar n' statusbar -->
    <item name="colorPrimary">#COLOR/item>
    <item name="colorPrimaryDark">#COLOR</item>

    <!-- For items -->
    <item name="colorAccent">#COLOR</item>
</style>

et c'est tout :)

0
HerberthObregon

Je l'ai résolu en reconstruisant le projet ou le module.

0
Pober Wong