Excepción generada durante el renderizado: no se puede localizar el modo 0

91

Después de actualizar BuildToolsa la versión 25.0.0.

compileSdkVersion 25
buildToolsVersion "25"

Tengo un problema con la vista previa del diseño de Android. Ahora muestra un error:

Excepción generada durante el renderizado: no se puede localizar el modo 0

ingrese la descripción de la imagen aquí

Intenté el proyecto Clean & Rebuild, pero no funciona. Antes de actualizar todo estaba bien.

Sé que puedo volver a versiones anteriores de BuildTools, pero quiero saber por qué no funciona en la versión 25.0.0.


Parece que es un problema con 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
fuente
15
Parece un error con 25.0.0. Abrí un problema para él: code.google.com/p/android/issues/…
Jim Pekarek
2
Tengo el mismo problema con compileSdkVersion 24 / buildToolsVersion "24.0.2"; sin embargo, dejé que Android Studio hiciera una actualización (de varias cosas, esencialmente lo que pidió actualizar) ayer, y creo que se rompió después de eso.
Steven Craft
1
@HenriquedeSousa Problema que surge cuando en.wikipedia.org/wiki/Andy_Rubin se fue #Google
IntelliJ Amiya

Respuestas:

111

Este problema se ha resuelto, actualice la biblioteca de soporte a

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
fuente
62

Es un error molesto de la versión 25 .. Una solución temporal es degradar su proyecto,

 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
fuente
18

Otra solución temporal es reemplazar <android.support.v7.widget.RecyclerViewcon <RecyclerViewpara que pueda ver la Vista renderizada. Al compilar, cámbielo de nuevo a<android.support.v7.widget.RecyclerView

Hibbem
fuente
7

La biblioteca de compatibilidad de Android proporciona funciones de utilidad compatibles con versiones anteriores. Las aplicaciones pueden utilizar estas funciones de utilidad para proporcionar una experiencia de usuario adecuada en una amplia gama de versiones del sistema Android.

Es un problema de error y debería corregirse en la versión futura de la biblioteca de diseño de soporte .

Debe degradar su versión para Soluciones temporales .

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
fuente
6

Para ver la vista previa, utilizo este truco ... agregar app:layoutManager="0"para el recyclingView en un diseño XML

Pero arrojará InflateException en tiempo de ejecución. ¡ QUITE esta propiedad del archivo de diseño XML antes de ejecutar la aplicación!

Zohab Ali
fuente
4

Como solución temporal, puede crear una clase secundaria de vista de reciclador y anular solo enAttachedToWindow como se muestra a continuación. Luego use esta clase en sus diseños XML

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

Actualización: a partir de la biblioteca de soporte 25.0.1, la corrección ya está incluida en la biblioteca y el problema ya no existe

Sameh Mikhail
fuente