【问题标题】:Failed to instantiate one or more calsses (android.support.v7.widget.AppCompatTextView)无法实例化一个或多个类 (android.support.v7.widget.AppCompatTextView)
【发布时间】:2017-10-14 12:06:38
【问题描述】:

背景

我正面临这个错误:

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)

适用于应用程序中的每个布局 (.xml)。

我试过这个solution。上面的 xml 错误消失了,但视图未正确呈现。几天前,我的应用程序在不添加 Base 的情况下正常工作。我正在使用版本控制,所以我确信Base 不是问题。 我正在测试通用图像加载器库。仅在测试后,我恢复了所有更改。之后,每个 xml 都会出现此错误。 (直到最后一次提交,一切都运行良好)。不知道是什么坏了? 我也尝试过其他解决方案(使缓存和东西无效。但都是徒劳的)。

Gradle 构建(应用)

 compile 'com.android.support:support-v4:26.+'
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:design:26.+'
    compile 'com.android.support:recyclerview-v7:26.+'
    compile 'com.android.support:cardview-v7:26.+'
    compile 'com.android.support:palette-v7:26.+'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup.okhttp3:okhttp:3.8.1'
    compile 'uk.co.chrisjenx:calligraphy:2.2.0'
    compile 'com.github.bluejamesbond:textjustify-android:2.1.6'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-ads:11.0.0'

【问题讨论】:

  • 您在 textview 中使用自定义字体吗?
  • 是的。但它工作正常。
  • 日志与加载字体失败有些相关
  • 你是对的。我也在调查。但是在样式中添加Base 可以解决此问题。 (但视图未正确呈现)这很令人困惑,因为几天前没有Base 工作正常
  • 你更新了 gradle 中的依赖了吗?

标签: android xml android-actionbar toolbar


【解决方案1】:

您是否尝试过重建/清理项目?!有时这种类型的错误可以解决或使缓存无效并重新启动?试试看,也许有帮助。

【讨论】:

  • 我什么都试过了。现在,我刚刚在 Win 7 上重新安装了所有东西(在我使用 Ubuntu 之前)。我猜我之前的安装已经损坏了。
【解决方案2】:

对我有用的解决方案:

打开 - “styles.xml”

更改 - parent="Base.Theme.AppCompact.(您的首选样式)"

【讨论】:

  • 一点解释也应该有所帮助。
猜你喜欢
  • 2018-04-16
  • 2018-02-02
  • 2018-01-30
  • 1970-01-01
  • 2017-12-31
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多