Android 无法实例化一个或多个类

Posted

技术标签:

【中文标题】Android 无法实例化一个或多个类【英文标题】:Android Failed to instantiate one or more classes 【发布时间】:2017-12-31 10:35:06 【问题描述】:

我有一个正在运行的项目,所有 xml 文件都向我显示错误消息 android Failed to instantiate one or more classes。该程序仍然有效。

我清理了缓存并使用了无效缓存并重新启动。

这里是完整的消息:

以下类无法实例化android.support.v7.widget.AppCompatTextView

提示:在自定义视图中使用 View.isInEditMode() 可跳过代码或在 IDE 中显示示例数据。

java.lang.NullPointerException
    at android.content.res.Resources_Delegate.getValue(Resources_Delegate.java:788)
    at android.content.res.Resources.getValue(Resources.java:1286)
    at android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:212)
    at android.support.v4.content.res.ResourcesCompat.getFont(ResourcesCompat.java:206)
    at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119)
    at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208)
    at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152)
    at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38)
    at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:81)
    at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:71)
    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:250)
    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.StatusBar.<init>(StatusBar.java:67)
    at com.android.layoutlib.bridge.impl.Layout.createStatusBar(Layout.java:224)
    at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:146)
    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)

【问题讨论】:

检查资源文件和其中的值。 @AmirKhan 预览中选择的主题是什么? 【参考方案1】:

styles.xml

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

【讨论】:

这条消息让我烦恼了好几个星期。干杯! 对不起,我终于在 values-v21 中找到了第二个 styles.xml 并更新了它。现在它可以正常工作了。 你到底是怎么想出来的?!这个解决方案对我有用。谢谢! 升级到 Android Studio 3.0.1 后问题开始出现。这已经帮我解决了,谢谢。 @vinod 谢谢它对我有用,但我有疑问。我已经更改了样式主题所以是否有任何更改应用于应用程序或工作方式与在样式中添加 Base 之前的工作方式相同跨度> 【参考方案2】:

最后,在遇到同样的错误 4 天后,我自己解决了这个问题:

点击

构建--> 构建构建

然后

刷新布局。

【讨论】:

@DikShU 你可以在 UI 预览界面刷新布局【参考方案3】:

build.gradle(模块:app)中,通过搜索developer.googleappcompat的实现更改为以前的版本

这是 android 框架中的错误,通常发生在 alpha 和 beta appcompat 版本中。

希望这会有所帮助。

【讨论】:

以上是关于Android 无法实例化一个或多个类的主要内容,如果未能解决你的问题,请参考以下文章

无法实例化以下类:- android.support.v7.widget.Toolbar

如何摆脱这个??? “无法实例化以下类”

Android:Eclipse:无法实例化以下类:- com.google.android.gms.common.SignInButton

CDI + JPA 多个 @OneToMany - LAZY/EAGER - LazyInitializationException 或无法实例化多个包

zxing android 集成在某些设备上崩溃,以下类无法实例化:- com.google.zxing.client.android.ViewfinderView

Android错误,无法实例化服务...接口无法实例化