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


91

更新BuildTools到版本25.0.0之后。

compileSdkVersion 25
buildToolsVersion "25"

我在使用Android布局预览时遇到问题。现在显示错误:

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

在此处输入图片说明

我试图清理和重建项目,但是没有用。在更新之前,一切都很好。

我知道我可以返回到的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)

15
看起来像是25.0.0的错误。:我开了一个问题,因为它 code.google.com/p/android/issues/...
Amagi82

2
我在compileSdkVersion 24 / buildToolsVersion“ 24.0.2”上遇到了同样的问题-但是我昨天让Android Studio进行了更新(包括各种内容,本质上是要求更新的内容),我相信在那之后它就被打破了。
史蒂芬·克拉夫特

1
@HenriquedeSousa en.wikipedia.org/wiki/Andy_Rubin离开#Google
IntelliJ Amiya,

Answers:


111

问题已解决,将支持库更新为

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'

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'

18

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


7

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

这是一个错误问题,应在以后的support-design库发行版中修复。

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

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' 

6

要查看预览,我使用此技巧..... app:layoutManager="0"在布局XML中为recyclerView 添加

但是它将在运行时引发InflateException。因此,在运行应用程序之前,请从XML布局文件中删除该属性!


4

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.