在渲染过程中引发exception:无法定位模式0

BuildTools更新到版本25.0.0后。

 compileSdkVersion 25 buildToolsVersion "25" 

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

在渲染过程中引发exception:无法定位模式0

在这里输入图像说明

我试图清理和重build项目,但它不起作用。 更新之前一切都很好。

我知道我可以回到先前版本的BuildTools ,但是我想知道为什么它在版本25.0.025.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) 

此问题已解决,请更新支持库

 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' 

这是一个恼人的25版本的bug。临时解决scheme是降级您的项目,

  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' 

另一个临时解决scheme是用<RecyclerViewreplace<android.support.v7.widget.RecyclerView ,以便您可以看到渲染的视图。 编译时,将其更改回<android.support.v7.widget.RecyclerView

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

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

Android支持库提供向后兼容的实用程序function。 应用程序可以使用这些实用程序function在广泛的Android系统版本中提供适当的用户体验。

这是一个错误问题,应该在将来发布的支持devise库中解决

  • 渲染问题 – 在渲染过程中引发exception:无法定位模式0

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

 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' 

作为临时解决scheme,您可以创build子类的回收站视图,并仅覆盖onAttachedToWindow,如下所示。 然后在你的XML布局中使用这个类

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

更新:从支持库25.0.1开始,修复已经包含在库中的问题了