【问题标题】:Error inflating class com.google.android.material.navigation.NavigationView after migration to AndroidX迁移到 AndroidX 后膨胀类 com.google.android.material.navigation.NavigationView 时出错
【发布时间】:2019-07-08 08:49:53
【问题描述】:

在我将我的项目更新为 AndroidX 并将 targetSdkVersion 设置为 28 后,我的项目在从商店安装以进行 beta 测试时崩溃。

以下是我收到的错误日志:

2019-07-08 08:28:33.026 32011-32011/? E/AndroidRuntime: FATAL EXCEPTION: main Process: hu.itq.oakprotection, PID: 32011
        java.lang.RuntimeException: Unable to start activity ComponentInfo{hu.itq.oakprotection/hu.itq.oakprotection.MainActivity}: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.google.android.material.navigation.NavigationView
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3194)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
            at android.app.ActivityThread.-wrap12(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
            at android.os.Handler.dispatchMessage(Handler.java:108)
            at android.os.Looper.loop(Looper.java:166)
            at android.app.ActivityThread.main(ActivityThread.java:7425)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
         Caused by: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.google.android.material.navigation.NavigationView
         Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class com.google.android.material.navigation.NavigationView
         Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance0(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
            at android.view.LayoutInflater.createView(LayoutInflater.java:658)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:801)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:874)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
            at androidx.appcompat.app.AppCompatDelegateImpl.c(Unknown Source:23)
            at androidx.appcompat.app.AppCompatActivity.setContentView(Unknown Source:4)
            at hu.itq.oakprotection.MainActivity.onCreate(Unknown Source:6)
            at android.app.Activity.performCreate(Activity.java:7372)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
            at android.app.ActivityThread.-wrap12(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
            at android.os.Handler.dispatchMessage(Handler.java:108)
            at android.os.Looper.loop(Looper.java:166)
            at android.app.ActivityThread.main(ActivityThread.java:7425)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
         Caused by: java.lang.NoSuchMethodError: No interface method d()I in class Lorg/xmlpull/v1/XmlPullParser; or its super classes (declaration of 'org.xmlpull.v1.XmlPullParser' appears in /system/framework/core-libart.jar)
            at androidx.appcompat.view.SupportMenuInflater.a(Unknown Source:5)
            at androidx.appcompat.view.SupportMenuInflater.inflate(Unknown Source:25)
            at com.google.android.material.navigation.NavigationView.b(Unknown Source:12)
            at com.google.android.material.navigation.NavigationView.<init>(Unknown Source:255)
            at com.google.android.material.navigation.NavigationView.<init>(Unknown Source:2)
            at java.lang.reflect.Constructor.newInstance0(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:334) 

以下是我在build.gradle文件中的依赖:

android {
    compileSdkVersion 28
    def versionMajor = 1
    def versionMinor = 0
    def versionPatch = 1
    def versionBuild = 4 // ezt kell átírni új verzió kirakásakor

    defaultConfig {
        applicationId "hu.itq.oakprotection"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
        versionName "${versionMajor}.${versionMinor}.${versionPatch}"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation 'androidx.core:core:1.0.2'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.annotation:annotation:1.1.0'

    implementation 'com.payumoney.sdkui:plug-n-play:1.2.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'com.google.android.gms:play-services-base:17.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    //Test error miatt kellett
    implementation 'androidx.annotation:annotation:1.1.0'

    //Aszinkron hálózatokhoz
    implementation 'com.android.volley:volley:1.1.1'

    //Facebook
    implementation 'com.facebook.android:facebook-android-sdk:4.34.0'
    //Osm Droid
    implementation 'org.osmdroid:osmdroid-android:6.1.0'
    implementation 'com.github.MKergall:osmbonuspack:6.4'

    implementation 'com.github.angads25:filepicker:1.1.1'
    //Tile provider igényli
    implementation 'mil.nga.geopackage:geopackage-android:3.0.2'
    implementation 'com.j256.ormlite:ormlite-android:5.1'
    implementation 'mil.nga.geopackage:geopackage-core:3.0.2'
    implementation 'ar.com.hjg:pngj:2.1.0'
    implementation 'mil.nga:tiff:2.0.0'
    implementation('mil.nga.geopackage:geopackage-android:3.0.2') {
        exclude group: 'com.google.android.gms', module: 'play-services'
        exclude group: 'com.google.maps.android', module: 'android-maps-utils'
        exclude group: 'com.android.support', module: 'support-v13'
    }
    //Glide
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
    //Mapsforge rendering and database support, which is LGPL
    implementation 'org.mapsforge:mapsforge-map-android:0.8.0'
    implementation 'org.mapsforge:mapsforge-map:0.8.0'
    implementation 'org.mapsforge:mapsforge-themes:0.8.0'
    // ExoPlayer
    implementation 'com.google.android.exoplayer:exoplayer:2.7.3'
    //Youtube
    implementation 'com.github.HaarigerHarald:android-youtubeExtractor:v1.7.0'}

activity_main.xml:

<androidx.drawerlayout.widget.DrawerLayout 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/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start"
    tools:context=".MainActivity">

    <include
        layout="@layout/app_bar_main" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"
        app:itemIconTint="@color/colorPrimary"
        app:itemTextColor="@color/colorPrimary"
        android:backgroundTint="@color/colorWhite"/>

</androidx.drawerlayout.widget.DrawerLayout>

为什么我收到 NavigationViewandroid.view.InflateException 错误?

【问题讨论】:

  • 您是否使用来自 3rd 方库的任何视图? (只是猜测)
  • 检查layout/nav_header_main
  • 在我的情况下是... android:fontFamily="@font/montserrat_bold" 。在 previos sdk 版本中工作,但现在......

标签: android androidx android-navigationview


【解决方案1】:

发生此错误的原因有多种。检查以下内容并确保它们正确:

  • 如果您使用的是 Android Studio 中的默认导航抽屉模板代码,请检查您的代码中使用的 com.google.android.material.navigation.NavigationView(可能在 activity_main.xml)中使用的 drawablecolor 资源。
  • 检查可绘制文件是否在res/drawable 文件夹中,而不是在res/drawable-v21 中。
  • 检查您是否在NavigationView 中使用过android:backgroundTint()android:src 或类似名称。由于它们在 android API 级别 21 以下无法工作,因此请改用 app:backgroundTintapp:srcCompat

【讨论】:

  • 问题是:android:backgroundTint = "@color / colorWhite"。解决方案:app: backgroundTint = "@color / colorWhite" 谢谢你,你救了我的一天;)
  • 很高兴能帮到你!这些是遇到此错误时我一直在寻找的 3 个常见嫌疑人。
  • 我有同样的问题 1) 我没有使用 backgrounTint 或 android:src 2) 我没有在 NavigationView 中使用颜色或可绘制但我的应用程序在这条线上崩溃 setContentView(R.layout.layout_base_activity);
  • 不客气@MD.Riyaz。很高兴我的回答也解决了你的问题。请考虑给予支持,因为它有帮助。
  • 乐于帮助@YashM.Hanj
【解决方案2】:

就我而言,问题出在 navigation.NavigationView app:headerLayout 布局中 我正在设置

<ImageView 
  app:srcCompat="@mipmap/ic_launcher_round"
/> 

问题出在 ic_launcher_round 因为它在文件夹 mipmap-anydpi-v26 内 我正在使用 API 级别为 7.1.1 的 android 版本:25

希望这对任何人都有帮助

【讨论】:

    【解决方案3】:

    对于那些选择的答案对他们没有帮助的人,我发现 NavigationView 主题有问题,它应该是 appCompat 主题(至少对我来说)。 创建新样式后,例如:

    <style name="NavView" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        ...
    </style>
    

    并在我的 mainactivity.xml 中的 NavigationView 中将它与 android:theme="@style/NavView" 一起使用,应用程序现在可以完美运行。

    【讨论】:

      【解决方案4】:

      在我的例子中,问题在于 Manifest 文件中的主题值

      <activity
              android:name=".ui.BarcodeReaderDrawerActivity"
              android:label="@string/title_activity_barcode_reader_drawer">
              android:theme="@style/AppBaseTheme.NoActionBar"
          </activity>
      

      改了

      <activity
              android:name=".ui.BarcodeReaderDrawerActivity"
              android:label="@string/title_activity_barcode_reader_drawer"
              android:theme="@style/Theme.MaterialComponents.Light.NoActionBar">
          </activity>
      

      【讨论】:

        【解决方案5】:

        您可以检查您的 XML 文件。您的 xml 中有问题,例如菜单、导航标题等。就我而言, res/menu/menu.xml 中的错误

        【讨论】:

          【解决方案6】:

          我在升级到 Androidx 时遇到了这个错误,很难找到。问题出在活动主题上。

          在styles.xml中,不知何故我有错误的android材料主题,导致导航栏没有附加到操作栏。

          from:
          
              <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
          
          to:
          
              <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
          

          【讨论】:

            【解决方案7】:

            我尝试更改模块设置、gradle 设置、更改依赖项和许多事情,发现问题出在导航视图上,但属于不同类型的问题,即

            为抽屉布局选择的图像溢出 -> 所以只需更改图像或编辑它调整它的大小然后尝试。

            因此,导航视图会在某些设备中引发错误。

            【讨论】:

              【解决方案8】:

              android.view.InflateException: 表示您的 XML 文件本身有问题。

              请检查您在 XML 标记中分配的所有尺寸、颜色资源和其他资源。

              或在此处发布您的 XML 文件。

              【讨论】:

                【解决方案9】:

                就我而言,我手动将res/drawable-v24 中的所有内容移动到res/drawable 文件夹,并将res/mipmap-anydpi-v26 移动到res/mipmap-hdpi,并且在搭载Android 5 和6 的手机中问题已得到解决。

                【讨论】:

                  【解决方案10】:

                  此错误与主题有关。我通过评论主题中的以下行解决了我的问题

                    <style name="AppTheme.NavigationView"  >
                      <!--<item name="android:textColorSecondary">#FFFFFF</item>-->
                      <item name="android:scrollbarThumbVertical">@android:color/transparent</item>
                      <item name="elevation">0dp</item>
                  </style>
                  

                  通过对主题代码逐行删除或注释,可以快速断定问题出在哪里。

                  【讨论】:

                    【解决方案11】:

                    我的问题不是因为android:src

                    但是因为我使用矢量渐变作为背景(android:background="@drawable/bg") 内部导航标题布局

                    而且它只发生在 Android 6 中

                    我从这里改变了向量:

                    <vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" android:width="200dp" android:height="133dp" android:viewportWidth="375" android:viewportHeight="280">
                        <path android:pathData="M0 0h375v280H0V0z">
                            <aapt:attr name="android:fillColor">
                                <gradient android:endX="497.417" android:endY="263.205" android:startX="150.5" android:startY="-33.5" android:type="linear">
                                    <item android:color="#FFFFFFFF" android:offset="0"/>
                                    <item android:color="#00000000" android:offset="1"/>
                                </gradient>
                            </aapt:attr>
                        </path>
                    </vector>
                    

                    到这里

                    <?xml version="1.0" encoding="utf-8"?>
                    <shape xmlns:android="http://schemas.android.com/apk/res/android"
                        android:shape="rectangle">
                    
                        <gradient
                            android:angle="315"
                            android:endColor="#ffffff"
                            android:startColor="#000000"
                            android:type="linear" />
                    </shape>
                    

                    崩溃消失

                    【讨论】:

                      【解决方案12】:

                      在我的例子中,在导航标题布局中,我的图像太大并且不适合屏幕。我改变了那个图标,它就跑了。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2020-02-23
                        • 2019-06-28
                        • 2019-03-23
                        • 1970-01-01
                        • 1970-01-01
                        • 2019-04-09
                        • 1970-01-01
                        • 2020-07-29
                        相关资源
                        最近更新 更多