渲染期间引发异常:无法找到模式0

时间:2016-10-20 18:30:47

标签: android android-studio

BuildTools更新为版本25.0.0。

compileSdkVersion 25
buildToolsVersion "25"

我的Android布局预览有问题。现在它显示错误:

  

渲染期间引发异常:无法找到模式0

enter image description here

我试过清洁&重建项目,但它不起作用。 在更新之前一切都很好。

我知道我可以回到以前版本的BuildTools,但我想知道为什么它不适用于版本25.0.0

好像是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)

6 个答案:

答案 0 :(得分:111)

issue已解决,请将支持库更新为

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'

答案 1 :(得分:62)

这是版本25的烦人的错误.. 临时解决方案是降级您的项目,

 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'

答案 2 :(得分:18)

另一个临时解决方案是将<android.support.v7.widget.RecyclerView替换为<RecyclerView,以便您可以看到呈现的视图。编译时,将其更改回<android.support.v7.widget.RecyclerView

答案 3 :(得分:7)

  

Android支持库提供向后兼容的实用程序   功能。应用可以使用这些实用程序功能来提供   适用于各种Android系统的适当用户体验   版本

这是一个 bug 问题,将来应该修复 Release of the support-design library

您应 降级 临时解决方案 的版本。

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' 

答案 4 :(得分:6)

看预览我用这个技巧..... 在布局XML中为recyclerView添加app:layoutManager="0"

但它会在运行时抛出InflateException。在运行应用程序之前,从XML布局文件中删除此属性!

答案 5 :(得分:4)

作为临时解决方案,您可以创建子类的回收器视图,并仅覆盖onAttachedToWindow,如下所示。然后在XML布局中使用此类

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

更新:从支持库25.0.1开始,修复已经包含在库中并且问题不再存在