【问题标题】:Adding Maven repository causes an error - android.support.v7.widget.AppcompatTextView can't be instantiated添加 Maven 存储库会导致错误 - 无法实例化 android.support.v7.widget.AppcompatTextView
【发布时间】:2017-08-21 17:04:40
【问题描述】:

注意:我已经浏览了所有相关帖子,并且完全按照所写的内容进行操作,但没有任何效果。

我正在尝试添加 ConstraintLayout 1.1.0-beta1 for百分比尺寸,但每当我这样做时,底部会出现一个弹出窗口。


我多次单击“安装存储库和同步项目”,但没有任何反应。所以,我尝试在Build.gradle(项目)中添加以下代码,它运行良好,但出现了一个新错误。

repositories {
    maven {
        url 'https://maven.google.com'
    }
}


新的错误与AppCompatTextView有关

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

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)

上面所说的任何内容都可以通过将ConstraintLayout 1.1.0-beta1 替换为ConstraintLayout 1.0.1 来删除,并且应用程序可以正常工作。

这是 build.gradle(应用程序)。

apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.android.application'    
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "cant.reveal.the.secret"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}    
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })          
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support:design:26.0.0-alpha1'
    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta1'
    compile 'com.google.firebase:firebase-ads:11.0.4'
    compile 'com.google.android.gms:play-services-maps:11.0.4'
    compile 'com.google.android.gms:play-services-location:11.0.4'
    compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    compile 'com.android.support:support-v4:26.+'
    testCompile 'junit:junit:4.12'
}


最后,是否有任何解决方案/修复此问题,以便我可以使用带有百分比尺寸的 ConstraintLayout 1.1.0-beta1 而不会出现此错误。
此外,将那些 26.+ 版本更改为 26.0.0 或 26.0.1 会显示相同的错误。

编辑 -
我发现每当我添加它时如 Android 支持页面所述,我的项目 gradle 中的 Maven 存储库出现此渲染错误。
另外,我在 SDK 管理器 -> 工具中看不到我尝试添加的任何这些版本,这意味着添加这些版本不会影响 repo 的版本,也不会影响安装。
在哪里可以找到这些库的 .jar/.aar 文件?

仍然需要帮助,任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 试试这个 compile 'com.android.support.constraint:constraint-layout:1.0.2'
  • @SnehalGongle 但我需要ConstraintLayout 1.1.0-beta1,因为它具有比设置边距更好的百分比尺寸。
  • 尝试使用这个 compile 'com.android.support.constraint:constraint-layout:1.+'
  • 我知道添加 + 号有时会导致意外错误,但仍然可以多次使用
  • 再次感谢,但使用 1.+ 使用库版本 1.0.1,即使它应该使用最新版本。

标签: android android-studio android-appcompat


【解决方案1】:

查看我的回答here。与AppCompatTextView 相关的NullPointerException 可以通过将 res/values/styles.xml 中的父主题更改为带有Base 的主题来修复,例如

&lt;style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"&gt;

我刚刚试了一下,可以使用ConstraintLayout beta 属性而不会出错。

【讨论】:

  • 谢谢伙计...我真的需要它....终于我的项目再次运行,没有任何问题/错误。
  • 没问题。很高兴它有帮助。
【解决方案2】:

试试这个。

在您的 Android Studio 中,选择 Tools --> Android --> SDK Manager

然后安装这个。

已编辑

你能详细介绍一下你的安装吗?

并检查您是否安装1.1.0-beta1

【讨论】:

  • 谢谢,但我已经安装了这些,还用所有版本重新安装了两次,但什么也没发生。
  • 它不会安装 1.1.0-beta1 或任何 android.support 版本(26.0.0 或 26.0.1)。我使用 26.+ 和 1.0.1 让它像以前一样工作,但这些没有更新。
  • 你可以使用你已经安装的那些。并且改变你的build.gradle .@Hardiksharma
  • 我没有明白你想说什么,但我说清楚了。我已经在我的应用程序的主页上设置了边距,这基本上是一个修改后的 app_bar_home.xml。但由于屏幕尺寸和分辨率不同,在 1080x1920(5.5 英寸)下看起来不错,但在其他分辨率下效果较差。这就是为什么我需要百分比尺寸以根据百分比高度和百分比宽度使其相同,这只能通过ConstraintLayout 1.1.0-beta1 实现,但每当我添加它时,我必须添加导致此错误的 Maven 存储库。请注意,如果我使用旧版本,我的应用程序可以正常工作。很抱歉浪费了您的时间。
  • 你能改用compile 'com.android.support:percent:22.2.0'吗?
【解决方案3】:

尝试将构建版本降低到 25

compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
    applicationId "com.snake.againimage"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"

 compile 'com.android.support.constraint:constraint-layout:1.+'

然后添加约束布局

【讨论】:

  • 非常感谢您的回答和您的努力,但我需要ConstraintLayout 1.1.0-beta1,因为它具有比设置边距更好的百分比尺寸。
  • 尝试使用这个 compile 'com.android.support.constraint:constraint-layout:1.+'
【解决方案4】:

您是否尝试过清理项目并在将库更改为 ConstraintLayout 1.1.0-beta1 后重新构建它?

【讨论】:

  • 多次没有任何反应。
  • 好的,尝试将所有支持库和 buildToolsVersion 更改为 26.0.1
  • 还是同样的错误,是因为Constraint layout
猜你喜欢
  • 2018-04-16
  • 2018-02-02
  • 2018-01-30
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
相关资源
最近更新 更多