二进制 XML 文件第 0 行:使用 api 26 膨胀类 TextView 时出错

Posted

技术标签:

【中文标题】二进制 XML 文件第 0 行:使用 api 26 膨胀类 TextView 时出错【英文标题】:Binary XML file line #0: Error inflating class TextView using api 26 【发布时间】:2018-05-13 23:01:42 【问题描述】:

所以我一直在使用 sdk26 构建应用程序,但在 api23 上进行测试,现在我尝试在 api26 上的模拟器和 android 设备上运行,我不断收到“Binary XML file line #0: Error inflating class TextView”错误。

这是它崩溃的 xml 文件的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/enter_competition_view"
android:layout_
android:layout_
tools:context="eventvoter.carter.eventrr.EnterCompetition">

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical">

        <ImageView
            android:id="@+id/elements"
            android:layout_
            android:layout_
            android:layout_weight=".8"
            app:src="@drawable/elements" />

        <TextView
            android:layout_
            android:layout_
            android:gravity="center"
            android:text="WHAT IS YOUR ELEMENT?"
            android:textColor="@color/Black"
            android:textStyle="bold"
            android:textSize="20dp"/>

        <TextView
            android:id="@+id/Vocalist"
            android:layout_
            android:layout_
            android:background="@drawable/voc_crop_comp"
            android:fontFamily="@font/new_font"
            android:text="Vocalist/MC"
            android:textColor="@color/White"
            android:textStyle="bold"
            android:gravity="center"
            android:textSize="@dimen/small_text" />

        <TextView
            android:id="@+id/BeatProducer"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:background="@drawable/beat_crop_comp"
            android:fontFamily="@font/new_font"
            android:gravity="center"
            android:textStyle="bold"
            android:text="Beat Producer"
            android:textColor="@color/White"
            android:textSize="@dimen/small_text" />

        <TextView
            android:id="@+id/DanceGroup"
            android:layout_
            android:layout_
            android:fontFamily="@font/new_font"
            android:gravity="center"
            android:textStyle="bold"
            android:text="Dance Group"
            android:textColor="@color/White"
            android:textSize="@dimen/small_text"
            android:background="@drawable/dancegroup_crop_comp"
            android:layout_weight="1" />

        <TextView
            android:id="@+id/SoloDance"
            android:layout_
            android:layout_
            android:fontFamily="@font/new_font"
            android:gravity="center"
            android:textStyle="bold"
            android:text="Solo Dance/B-Boy"
            android:textColor="@color/White"
            android:textSize="@dimen/small_text"
            android:layout_weight="1"
            android:background="@drawable/solodancer_crop_comp"/>

        <TextView
            android:id="@+id/Grafitti"
            android:layout_
            android:layout_
            android:fontFamily="@font/new_font"
            android:gravity="center"
            android:textStyle="bold"
            android:text="Visual Arts/Graffiti"
            android:textColor="@color/White"
            android:textSize="@dimen/small_text"
            android:background="@drawable/visualarts_comp"
            android:layout_weight="1"/>


    </LinearLayout>
</LinearLayout>

崩溃点指向我的主类代码的这些行。

 public void createEnterCompView() 


    setContentView(R.layout.activity_enter_competition);

    TextView vocalist = (TextView) findViewById(R.id.Vocalist);
    TextView beatproducer = (TextView) findViewById(R.id.BeatProducer);
    TextView dancegroup = (TextView) findViewById(R.id.DanceGroup);
    TextView solodance = (TextView) findViewById(R.id.SoloDance);
    TextView visualarts = (TextView) findViewById(R.id.Grafitti);
    ImageView elements = (ImageView) findViewById(R.id.elements);


这是崩溃

致命异常:主要 进程:eventvoter.carter.eventrr,PID:11514 android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class TextView 原因:android.view.InflateException: Binary XML file line #0: Error inflating class TextView 引起:java.lang.RuntimeException:java.lang.reflect.InvocationTargetException 在 android.support.v4.graphics.TypefaceCompatApi26Impl.addFontFromAssetManager(TypefaceCompatApi26Impl.java:150) 在 android.support.v4.graphics.TypefaceCompatApi26Impl.createFromFontFamilyFilesResourceEntry(TypefaceCompatApi26Impl.java:218) 在 android.support.v4.graphics.TypefaceCompat.createFromResourcesFamilyXml(TypefaceCompat.java:116) 在 android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:249) 在 android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:213) 在 android.support.v4.content.res.ResourcesCompat.getFont(ResourcesCompat.java:206) 在 android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119) 在 android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) 在 android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152) 在 android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:81) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:71) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 在 android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 在 android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 eventvoter.carter.eventrr.MainMenu.createEnterCompView(MainMenu.java:302) 在 eventvoter.carter.eventrr.MainMenu$5.onClick(MainMenu.java:280) 在 android.view.View.performClick(View.java:6256) 在 android.view.View$PerformClick.run(View.java:24697) 在 android.os.Handler.handleCallback(Handler.java:789) 在 android.os.Handler.dispatchMessage(Handler.java:98) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 android.support.v4.graphics.TypefaceCompatApi26Impl.addFontFromAssetManager(TypefaceCompatApi26Impl.java:145) 在 android.support.v4.graphics.TypefaceCompatApi26Impl.createFromFontFamilyFilesResourceEntry(TypefaceCompatApi26Impl.java:218) 在 android.support.v4.graphics.TypefaceCompat.createFromResourcesFamilyXml(TypefaceCompat.java:116) 在 android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:249) 在 android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:213) 在 android.support.v4.content.res.ResourcesCompat.getFont(ResourcesCompat.java:206) 在 android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119) 在 android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) 在 android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152) 在 android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:81) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:71) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 在 android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 在 android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 eventvoter.carter.eventrr.MainMenu.createEnterCompView(MainMenu.java:302) 在 eventvoter.carter.eventrr.MainMenu$5.onClick(MainMenu.java:280) 在 android.view.View.performClick(View.java:6256) 在 android.view.View$PerformClick.run(View.java:24697) 在 android.os.Handler.handleCallback(Handler.java:789) 在 android.os.Handler.dispatchMessage(Handler.java:98) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 引起:java.lang.NullPointerException 在 android.graphics.FontFamily.nAddFontFromAssetManager(本机方法) 在 android.graphics.FontFamily.addFontFromAssetManager(FontFamily.java:149) 在 java.lang.reflect.Method.invoke(本机方法) 在 android.support.v4.graphics.TypefaceCompatApi26Impl.addFontFromAssetManager(TypefaceCompatApi26Impl.java:145) 在 android.support.v4.graphics.TypefaceCompatApi26Impl.createFromFontFamilyFilesResourceEntry(TypefaceCompatApi26Impl.java:218) 在 android.support.v4.graphics.TypefaceCompat.createFromResourcesFamilyXml(TypefaceCompat.java:116) 在 android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:249) 在 android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:213) 在 android.support.v4.content.res.ResourcesCompat.getFont(ResourcesCompat.java:206) 在 android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119) 在 android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) 在 android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152) 在 android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:81) 在 android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:71) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 在 android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 在 android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:866) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 eventvoter.carter.eventrr.MainMenu.createEnterCompView(MainMenu.java:302) 在 eventvoter.carter.eventrr.MainMenu$5.onClick(MainMenu.java:280) 在 android.view.View.performClick(View.java:6256) 在 android.view.View$PerformClick.run(View.java:24697) 在 android.os.Handler.handleCallback(Handler.java:789) 在 android.os.Handler.dispatchMessage(Handler.java:98) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

分级

apply plugin: 'com.android.application'

android 
useLibrary 'org.apache.http.legacy'
compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig 
        applicationId "eventvoter.carter.eventrr"
        minSdkVersion 21
        targetSdkVersion 26
    versionCode 1
    versionName "1.0"

buildTypes 
    release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro'
    
  


dependencies 


implementation 'com.android.support.constraint:constraint-layout:1.0.2'
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':httpclient-4.5.3')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.1.0'
compile project(':universal-image-loader-1.9.5 (1)')
compile project(':okhttp-3.9.0')
compile 'com.facebook.android:facebook-login:4.28.0'
compile 'com.google.gms:google-services:3.1.2'
//noinspection GradleCompatible
implementation 'com.google.firebase:firebase-auth:11.6.0'
implementation 'com.google.android.gms:play-services-auth:11.6.0'
compile 'com.github.bumptech.glide:glide:4.3.1'



apply plugin: 'com.google.gms.google-services'

【问题讨论】:

分享你的毕业作品 同时检查你的字体 不要使用驼峰式大小写来定义视图。检查一次你的 textview 样式。 您的问题可能是 android:fontFamily.. 临时删除并检查它 How to change fontFamily of TextView in Android的可能重复 【参考方案1】:

我遇到了类似的崩溃

InflateException: Binary XML file line #0: Error inflating class EditText

在 Android 8.0 和 8.1 中发布 apk 由于 xml 字体 导致我没有使用最新的支持库,我更新了支持库版本并已修复。

xml 有

<EditText
        android:id="@+id/editEmail"
        android:layout_
        android:layout_
        android:fontFamily="@font/sanfranciscodisplay_medium"
        android:hint="@string/enter_email_address"
        android:lines="1"
        android:inputType="textEmailAddress"
        android:layout_centerHorizontal="true"/>

我的 gradle 配置

BUILD_TOOLS_VER = '26.0.2'

TARGET_SDK_VER = 26
MIN_SDK_VER = 19

SUPPORT_LIBS_VER = '26.1.0' -> '27.0.2' (fix here)
GOOGLE_SERVICES_VER = '11.4.0' -> '11.8.0'

【讨论】:

AnrdoidX 怎么样?

以上是关于二进制 XML 文件第 0 行:使用 api 26 膨胀类 TextView 时出错的主要内容,如果未能解决你的问题,请参考以下文章

Google Map API 问题:android.view.InflateException:二进制 XML 文件第 2 行:二进制 XML 文件第 2 行:膨胀类片段时出错

API 19:android.view.InflateException:二进制 XML 文件行 #0:膨胀类 SeekBar 时出错

二进制 XML 文件第 0 行:膨胀类 <unknown> 时出错

java.lang.RuntimeException:二进制 XML 文件第 0 行:您必须提供 layout_height 属性

如何摆脱问题'二进制XML文件第8行:二进制XML文件第8行:使用XYPlot时会膨胀类com.androidplot.xy.XYPlot类]

二进制 XML 文件第 28 行:二进制 XML 文件第 28 行:膨胀类 <unknown> 时出错