Problèmes de rendu Exception soulevée lors du rendu: com.android.ide.common.rendering.api.LayoutlibCallback


154

J'ai rencontré un problème lors de la création d'un projet dans Android Studio. (Version 1.5.1)

Je décris mes actions étape par étape:

  • Ouvrez Android Studio.
  • Créez un nouveau projet sans aucune activité.
  • Faites une activité vide.

Et il peut y avoir un problème en mode aperçu:

Je reçois ce message:

Rendering Problems Exception raised during rendering: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser(Ljava/lang/String;)Lorg/xmlpull/v1/XmlPullParser;

Dans la trace de pile:

java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser(Ljava/lang/String;)Lorg/xmlpull/v1/XmlPullParser;
    at com.android.layoutlib.bridge.impl.ResourceHelper.getInternalComplexColor(ResourceHelper.java:146)
    at com.android.layoutlib.bridge.impl.ResourceHelper.getColorStateList(ResourceHelper.java:231)
    at android.content.res.BridgeTypedArray.getColorStateList(BridgeTypedArray.java:308)
    at android.widget.TextView.<init>(TextView.java:776)
    at android.widget.TextView.<init>(TextView.java:705)
    at android.widget.TextView.<init>(TextView.java:701)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:50)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:45)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:41)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:163)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at com.android.layoutlib.bridge.bars.CustomBar.<init>(CustomBar.java:95)
    at com.android.layoutlib.bridge.bars.StatusBar.<init>(StatusBar.java:67)
    at com.android.layoutlib.bridge.impl.Layout.createStatusBar(Layout.java:222)
    at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:144)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:213)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
    at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Quel pourrait être le problème?

Réponses:


414

J'ai eu le même problème après quelques mises à jour il y a quelques minutes, ce que j'ai fait pour résoudre le problème de rendu était de changer la version Android utilisée pour rendre les mises en page d'Android Studio en "API 23: Android 6.0".

Studio Android


5
Oui, ça marche. En outre, il est préférable de décocher "Choisir automatiquement le meilleur", car il sélectionne simplement le dernier. Vous devez sélectionner manuellement le sdk avec lequel vous souhaitez prévisualiser.
Abhishek

J'ai fait cela mais j'obtiens l'erreur suivante maintenant. Couldn't resolve resource @android:color/background_material_light
Martin Hoban

Juste pour avertir: c'est un problème récurrent.
marciowb

Mais pourquoi ce problème se produit lorsque le niveau d'API est défini sur 24. Et pourquoi pas sur 23?
Jay Donga

19

java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser (Ljava / lang / String;) Lorg / xmlpull / v1 / XmlPullParser;

Levée si une application tente d'appeler une méthode spécifiée d'une classe (statique ou instance) et que cette classe n'a plus de définition de cette méthode. Normalement, cette erreur est interceptée par le compilateur; cette erreur ne peut se produire au moment de l'exécution que si la définition d'une classe a été modifiée de manière incompétente.

Votre application doit cibler Android 6.0 (niveau d'API 23) pour activer ce comportement; vous n'avez pas besoin d'ajouter de code supplémentaire.

Sélectionnez simplement "API 23: Android 6.0" dans la section Aperçu. entrez la description de l'image ici


2

J'ai eu le même problème lorsque j'ai installé android studio 2.1 sur ubuntu 14.04.Même l'icône du robot Android qui affiche la version Android utilisée pour la mise en page de rendu n'affichait que la version de l'API niveau 24 et aucune autre version.

J'ai dû activer le téléchargement de l'API 23 en accédant au chemin ci-dessous

Outils -> SDK Manager -> Android SDK -> SDK Platforms -> Name.

Cochez l'option Android 6.0 (Marshwallow) qui sera téléchargée maintenant. Vous pourrez maintenant voir le niveau d'API 23 et en sélectionnant ce que nous pouvons contourner ce problème.


1

J'ai eu un problème similaire avec Android Studio 1.5.1 sous Windows 10. L'aperçu ne fonctionnait pas quelle que soit la version d'Android sélectionnée. Le stacktrace commence par:

"java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser (Ljava / lang / String;) Lorg / xmlpull / v1 / XmlPullParser;"

Lorsque je supprime l'attribut tools:showIn="@layout/activity_main" du RelativeLayoutproblème, le problème est résolu pour toutes les versions d'Android sauf "N". J'ai Android 2.2, 2.3.3, 5.0.1 et 6.0 activé

Je ne peux pas expliquer pourquoi l'action résout le problème ou pourquoi cela fonctionne pour la version N.


0

Ce n'est pas une réponse opportune, mais pour tous ceux qui recherchent une autre personne rencontrant le même problème, une mise à jour du studio Android fait l'affaire. Bien que toutes les suggestions ci-dessus fonctionnent, vous souhaitez obtenir la mise à jour (version 2.1.2).

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.