【问题标题】:The following classes could not be instantiated with android.support.v7.widget.AppCompatTextView无法使用 android.support.v7.widget.AppCompatTextView 实例化以下类
【发布时间】:2018-01-30 22:28:24
【问题描述】:

最近我在 android studio 的应用程序中将我的 sdk 从 25 更改为 26,我在我的所有 xml 中都遇到了这个奇怪的错误。目前,该错误并没有以我能看到的任何方式影响我的应用程序,但是每次我必须编辑或更改 xml 中的某些内容时,我都会感到厌烦。 这里的错误:


无法实例化以下类 - 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)

还有我的毕业生:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.al285790.time2cook"
        minSdkVersion 15
        targetSdkVersion 26
        multiDexEnabled true
        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.0.1'
    compile 'com.android.support:palette-v7:26.0.1'
    compile 'com.android.support:design:26.0.1'
    compile 'com.google.firebase:firebase-database:11.0.2'
    compile 'com.google.firebase:firebase-core:9.6.1'
    compile 'com.google.firebase:firebase-storage:11.0.2'
    compile 'com.google.firebase:firebase-auth:11.0.2'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.firebaseui:firebase-ui-storage:1.2.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile('com.mikepenz:materialdrawer:5.9.5@aar') {
        transitive = true
    }

    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

编辑:添加了一些我的 xml 代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"></android.support.v7.widget.Toolbar>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">

        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            tools:context="com.al285790.time2cook.recipeInfo.RecipeInfoActivity">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:scrollbars="none">

                <TextView
                    android:id="@+id/recipeNameText"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textSize="24sp"
                    android:textStyle="bold" />


                <ImageView
                    android:id="@+id/photoRecipe"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:scaleType="fitCenter"
                    app:srcCompat="@drawable/cho" />

                <TextView
                    android:id="@+id/textView10"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Dificulty"
                    android:textSize="24sp"
                    android:textStyle="bold" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">

                    <RatingBar
                        android:id="@+id/ratingBarDificulty"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:isIndicator="true"
                        android:numStars="5"
                        android:stepSize="1" />

                    <Button
                        android:id="@+id/button8"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:onClick="giveLike"
                        android:text="LIKE!" />
                </LinearLayout>

                <TextView
                    android:id="@+id/Ingredients"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Ingredients"
                    android:textSize="24sp"
                    android:textStyle="bold" />

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/superList"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/textView9"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Steps"
                    android:textSize="24sp"
                    android:textStyle="bold" />

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/stepsList"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

【问题讨论】:

  • 为什么用AppcompatTextView 用TextView 代替
  • 我只是在使用 TextView... 但即使在没有 TextView 的布局中我也会遇到错误。
  • 可以贴一下xml代码吗?
  • schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto" android:layout_width=" match_parent" android:layout_height="match_parent" android:background="@color/grayBackground">​​
  • 我认为这只是 API 26 或支持库 26.x 的另一个原生错误。我有完全一样的问题。在更新到较新版本的 Android 时,我已经习惯了这些问题。

标签: android xml android-studio sdk android-appcompat


【解决方案1】:

这是 Android Studio 2.3.3 中的一个错误,已报告 - Preview render problem when adding maven.google.com as a maven repo

很遗憾,这个错误不会在 Android Studio 2.3.3 中修复,但已在 Android Studio 3.0 中修复

所以让我们等待 Android Studio 3.0 的稳定版本推出

2017 年 10 月 26 日更新:

Android Studio 3.0 目前处于稳定通道。更新一下就不会出现这个错误了

【讨论】:

    【解决方案2】:

    我也遇到了这个错误,并试图通过多次清理、重建和使缓存失效来修复它。 为我解决的问题是将res/values/styles.xml中的父主题更改为Base,例如

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

    根据答案here

    【讨论】:

    • 成功了!我将styles.xml中的所有父母都更改为Base,然后清理并重建代码。万分感谢!公平地说,我已经习惯了这个错误,但现在工作起来好多了。
    • 这对我也有用。对于那些使用 NoActionBar 的人,您必须删除 .NoActionBar 后缀,因为它不包含在 Base.Theme 中。但不要害怕......您仍然可以通过更新您的样式中的“windowNoTitle”、“windowActionBar”、“android:windowFullscreen”和“android:windowContentOverlay”项目来删除 ActionBar。查看stackoverflow.com/questions/36478925/…中的选定答案
    【解决方案3】:

    你可以尝试两件事:

    1. 清理/重建

      • 打开 Android Studio 并转到 Tools -> Clean project 并让 gradle build 运行。

      • 完成后,进入Tools -> Rebuild project。

      • 完成。
    2. 使缓存失效

      • 打开 Android Studio 并转到 File -> Invalidate Caches/Restart 并单击 Invalidate/Restart。
      • 完成。

    【讨论】:

    • 这些建议在大多数情况下都有效,但对我自己也无效。我在过去 5 天里遇到了同样的错误,只能通过更改 android.support 的版本来删除。请参阅我的问题here,这可能会对您有所帮助。
    猜你喜欢
    • 2018-04-16
    • 2018-02-02
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多