在渲染过程中引发exception:无法定位模式0
将BuildTools
更新到版本25.0.0后。
compileSdkVersion 25 buildToolsVersion "25"
我有问题与Android布局预览。 现在显示错误:
在渲染过程中引发exception:无法定位模式0
我试图清理和重build项目,但它不起作用。 更新之前一切都很好。
我知道我可以回到先前版本的BuildTools
,但是我想知道为什么它在版本25.0.0
上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)
此问题已解决,请更新支持库
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是用<RecyclerView
replace<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开始,修复已经包含在库中的问题了