Exception levée lors du rendu: impossible de localiser le mode 0

91

Après la mise BuildToolsà jour vers la version 25.0.0.

compileSdkVersion 25
buildToolsVersion "25"

J'ai un problème avec l'aperçu de la mise en page Android. Maintenant, il affiche une erreur:

Exception levée lors du rendu: impossible de localiser le mode 0

entrez la description de l'image ici

J'ai essayé de nettoyer et reconstruire le projet, mais cela ne fonctionne pas. Avant la mise à jour, tout allait bien.

Je sais que je peux revenir aux versions précédentes de BuildTools, mais je veux savoir pourquoi cela ne fonctionne pas sur la version 25.0.0?


On dirait que c'est un problème avec RecyclerView

java.lang.IllegalStateException: Unable to locate mode 0
at android.view.DisplayInfo.findMode(DisplayInfo.java:458)
at android.view.DisplayInfo.getMode(DisplayInfo.java:445)
at android.view.Display.getRefreshRate(Display.java:648)
at android.support.v7.widget.RecyclerView.onAttachedToWindow(RecyclerView.java:2392)
at android.view.View.dispatchAttachedToWindow(View.java:15392)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2953)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:333)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:389)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:548)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:533)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:966)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:533)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$53(RenderTask.java:659)
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)
RediOne1
la source
15
On dirait un bogue avec 25.0.0. J'ai ouvert un numéro pour cela: code.google.com/p/android/issues/…
Jim Pekarek
2
J'obtiens le même problème avec compileSdkVersion 24 / buildToolsVersion "24.0.2" - cependant, j'ai laissé Android Studio faire une mise à jour (de diverses choses, essentiellement ce qu'il a demandé de mettre à jour) hier, et je crois qu'il a été cassé après cela.
Steven Craft
1
@HenriquedeSousa Problème survenu lorsque en.wikipedia.org/wiki/Andy_Rubin a quitté #Google
IntelliJ Amiya

Réponses:

111

Ce problème a été résolu, mettez à jour la bibliothèque de support pour

compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:25.0.1'
Furqan
la source
62

C'est un bogue ennuyeux de la version 25 .. Une solution temporaire consiste à rétrograder votre projet,

 compile 'com.android.support:appcompat-v7:24.2.1'
 compile 'com.android.support:design:24.2.1'
 compile 'com.android.support:recyclerview-v7:24.2.1'
XcodeNOOB
la source
18

Une autre solution temporaire consiste à remplacer <android.support.v7.widget.RecyclerViewpar <RecyclerViewpour que vous puissiez voir la vue rendue. Lors de la compilation, remettez-le en<android.support.v7.widget.RecyclerView

Hibbem
la source
7

La bibliothèque de support Android fournit des fonctions utilitaires rétrocompatibles. Les applications peuvent utiliser ces fonctions utilitaires pour offrir une expérience utilisateur appropriée sur un large éventail de versions du système Android.

C'est un problème de bogue et devrait être corrigé dans la prochaine version de la bibliothèque de conception de support .

Vous devez rétrograder votre version pour les solutions temporaires .

compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:v7:25.0.1' 
compile 'com.android.support:recyclerview-v7:25.0.1' 
IntelliJ Amiya
la source
6

Pour voir un aperçu, j'utilise cette astuce ..... ajouter app:layoutManager="0" pour le recyclerView dans une mise en page XML

Mais cela lèvera InflateException au moment de l'exécution. Supprimez donc cette propriété du fichier de mise en page XML avant d'exécuter l'application!

Zohab Ali
la source
4

En tant que solution temporaire, vous pouvez créer une classe enfant de la vue recycleur et remplacer uniquement onAttachedToWindow comme ci-dessous. Ensuite, utilisez cette classe dans vos mises en page XML

@Override
protected void onAttachedToWindow() {
    if (!isInEditMode()) {
        super.onAttachedToWindow();
    }
}

Mise à jour: à partir de la bibliothèque de support 25.0.1, correctif déjà inclus dans la bibliothèque et le problème n'existe plus

Sameh Mikhail
la source