XML预览中的渲染问题:无法定位模式0。

38

更新Android Studio后,在渲染过程中出现异常。

在渲染时引发异常:无法找到模式0

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)

1
已知问题,https://dev59.com/VlkS5IYBdhLWcg3wQEYU - Stefan
1
问题已经解决。请将支持库更新到新版本。 compile 'com.android.support:appcompat-v7:25.0.1' compile 'com.android.support:design:25.0.1' compile 'com.android.support:recyclerview-v7:25.0.1' - Aman Jain
编译 'com.android.support:recyclerview-v7:25.0.1' 编译 'com.android.support:appcompat-v7:25.0.1' 编译 'com.android.support:design:25.0.1',它会起作用。 - KAMAL VERMA
4个回答

35

这是关于com.android.support:design:25.0.0版本中RecyclerView的问题。

可能在该版本中存在某些问题。将版本更改为24.1.1解决了我的问题。

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:support-v13:24.1.1'
compile 'com.android.support:design:24.1.1'

如果您还没有删除默认提供的Gradle导入文件,请也进行更改。

androidTestCompile 'com.android.support:support-annotations:24.2.1'

14
我想知道com.android.support的开发人员是否完全使用Android Studio... - Paulo Taylor
2
这太疯狂了!他们在发货之前甚至测试一次吗?叹气谢谢你的回答! - Zordid
1
你也可以使用版本24.2.1,这是在25.0.0之前的最新版本。 - Stefan Medack

5

要么降级至v24版本,

或者

以下内容既不是解决方案也不是解决方法。

如果您只想查看预览,请在布局XML中为recyclerView添加app:layoutManager="0"。

添加此属性会引发运行时InflateException。因此,在运行应用程序之前,请从XML布局文件中删除该属性。


2
为什么不使用 tools:layoutManager="0" 工具呢? - A. Steenbergen

3

只需将您的compileSdkVersion更改为24并降低依赖关系:

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'
compile 'com.android.support:cardview-v7:24.2.1'

就这样。


2

一个临时的解决方案是将您的项目降级。

 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
请编辑现有答案,而不是提交几乎相同的内容。 - bendaf
1
如果您需要25个,例如BottomNavigationView,则此解决方案无效。 - Tony BenBrahim
@TonyBenBrahim,是的,当您编辑布局文件时,这只是一个临时修复。适当的修复可能将随支持存储库的更新一起提供。 - Sanket Berde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接