【问题标题】:Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class com.google.android.material.navigation.NavigationView引起:android.view.InflateException:二进制 XML 文件第 16 行:膨胀类 com.google.android.material.navigation.NavigationView 时出错
【发布时间】:2018-09-19 04:03:27
【问题描述】:

我的应用正在使用新的 AndroidX 框架,在设置 com.google.android.material.navigation.NavigationView(在我的 activity_main.xml 文件中)时,我收到此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gaucow.betterbartersystem/com.gaucow.betterbartersystem.MainActivity}: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.google.android.material.navigation.NavigationView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2947)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008)
        at android.app.ActivityThread.-wrap14(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6688)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
     Caused by: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.google.android.material.navigation.NavigationView
     Caused by: android.view.InflateException: Binary XML file line #16: 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:430)
        at android.view.LayoutInflater.createView(LayoutInflater.java:652)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:525)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.gaucow.betterbartersystem.MainActivity.onCreate(MainActivity.java:38)
        at android.app.Activity.performCreate(Activity.java:6912)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2900)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008)
        at android.app.ActivityThread.-wrap14(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6688)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:202)
        at android.content.res.Resources.getColorStateList(Resources.java:1861)
        at android.content.Context.getColorStateList(Context.java:542)
        at androidx.appcompat.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:67)
        at com.google.android.material.navigation.NavigationView.createDefaultColorStateList(NavigationView.java:513)
        at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:153)
        at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:104)

我的代码在这里:https://github.com/GauthamRajesh/BetterBarterSystem

感谢您帮我解决这个问题!

PS:我查看了可能的重复问题,答案涉及android.support 库。但是,由于我没有在我的代码中使用支持或设计库,因此该解决方案不适用于我。 NavigationViewandroid.support 版本和NavigationView 的Android Material 版本是不同的。

我也尝试使用此链接提供帮助,但找不到答案:https://material.io/develop/android/components/navigation-view/

【问题讨论】:

  • 您忘记为NavigationView implementation 'com.android.support:design:27.1.1' 添加依赖项
  • @Nilesh 他已经添加了那个库implementation 'com.google.android.material:material:1.0.0-rc02'
  • @Bek 同样的问题 检查异常Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
  • @NileshRathod 答案说 support 和 appcompat 库应该是相同的。在我的情况下,材料库和androidx库是相同的版本,因此该解决方案不适用。

标签: java android material-design navigationview androidx


【解决方案1】:

尝试删除 nav_header_main.xml 文件中的所有大图(背景、图标、...)!

【讨论】:

    【解决方案2】:

    如下改变你的风格

    <style name="AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    <style name="PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    

    将清单更改为

     <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name_real"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <activity android:name=".SignIn" android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:theme="@style/AppTheme.NoActionBar"
            android:name=".MainActivity"
            android:label="@string/title_activity_main"/>
    </application>
    

    【讨论】:

    • 我得到了同样的错误,但这次是为了膨胀MaterialButton: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gaucow.betterbartersystem/com.gaucow.betterbartersystem.MainActivity} : android.view.InflateException: Binary XML file line #10: Binary XML file line #10: Error inflating class com.google.android.material.button.MaterialButton
    • 您使用的是哪个版本的android studio
    • 我将项目上传到github github.com/droidapp/BetterBarterSystem。克隆它。如果它不起作用,那么你的 IDE 有问题。现在,即使我将样式更改为预览版,它也可以正常工作。
    • 很高兴为您提供帮助。
    猜你喜欢
    • 2018-11-07
    • 2018-03-04
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多