【问题标题】:Render layout preview failed in android studio在 android studio 中渲染布局预览失败
【发布时间】:2017-09-23 13:54:09
【问题描述】:

我正在使用 Android Studio 2.3.3 - Build #AI-162.4069837,我的 build.gradle 依赖块是:

compile 'com.android.support:support-v4:26.0.0-alpha1'
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:design:26.0.0-alpha1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
compile 'com.android.support:support-vector-drawable:26.0.0-alpha1'
compile 'com.android.support:animated-vector-drawable:26.0.0-alpha1'

当我尝试在设计模式下预览布局时,视图不会在所有使用 android.support.design.widget.CoordinatorLayoutandroid.support.v7.widget.RecyclerView 的布局中呈现或...给出以下错误 -

以下类无法实例化

我清理并重建项目,清除缓存,关闭并重新打开 Android Studio,但没有解决问题。

java.lang.NoSuchFieldError: ViewBackgroundHelper
    at android.support.v7.widget.AppCompatBackgroundHelper.loadFromAttributes(AppCompatBackgroundHelper.java:46)
    at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:63)
    at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:475)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:262)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:213)
    at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadClass(LayoutlibCallbackImpl.java:193)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:333)
    at android.view.BridgeInflater.onCreateView(BridgeInflater.java:152)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:222)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at com.android.layoutlib.bridge.bars.CustomBar.<init>(CustomBar.java:95)
    at com.android.layoutlib.bridge.bars.NavigationBar.<init>(NavigationBar.java:52)
    at com.android.layoutlib.bridge.bars.NavigationBar.<init>(NavigationBar.java:46)
    at com.android.layoutlib.bridge.impl.Layout.createNavBar(Layout.java:284)
    at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:140)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:301)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:368)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:567)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:549)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:863)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:549)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$1(RenderTask.java:680)
    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)

【问题讨论】:

    标签: android android-layout android-appcompat


    【解决方案1】:

    将您的项目级别 build.gradle 依赖项更改为此

    classpath 'com.android.tools.build:gradle:2.3.3'
    

    并用这些版本替换您的应用级别的 gradle 依赖项

    compile 'com.android.support:support-v4:26.+'
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support:design:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:support-vector-drawable:26.+'
    compile 'com.android.support:animated-vector-drawable:26.+'
    

    This的回答可能和你的问题有关

    编辑:看来你并不孤单。在thisthis 的帖子中,解决方法是等待下次更新或禁用gradle.properties 中的缓存。有些人已经回滚到稳定的gradle 并支持库版本作为临时解决方案。

    【讨论】:

    • 谢谢,项目级别为2.3.3,当使用+时,不受影响,不解决问题。
      到目前为止,它可以将 com.google.android.gms:play-services-gcm 库添加到依赖项。
    • 最新的支持库版本是26.1.0。将所有 26.+ 替换为 26.1.0 并同步项目。如果您收到任何同步错误,请更新 sdk 并重试
    • 在将 build.gradle lib 版本更改为 26.1.0 后,您是否尝试过“使缓存无效并重新启动”?
    • 更新了答案。尝试在 gradle.properties 中禁用缓存。访问第三个链接获取说明
    【解决方案2】:

    在 styles.xml 中将主题从 Theme.AppCompat.Light.DarkActionBar 更改为 Base.Theme.AppCompat.Light.DarkActionBar 对我有用。

    【讨论】:

      猜你喜欢
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 2016-06-14
      • 2018-12-03
      • 2021-09-20
      • 1970-01-01
      相关资源
      最近更新 更多