java - Inflate NavigationView 在 Android 4.4 及更低版本中导致异常

标签 java android material-design android-4.4-kitkat

所以我遇到了与 this fellow 相同的问题,但由于没有人回答他,我想提供更多背景信息,看看我们是否可以解决这个问题。我已经为此寻找答案有一段时间了,但没有任何效果。

我正在我的应用程序中实现一些 Material Design 小部件,例如 NavigationView、TabLayout 和 Cards。这些是我正在编译的支持库(今天更新了):

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:design:24.1.1'
compile 'com.android.support:cardview-v7:24.1.1'

目标和最小 SDK:

minSdkVersion 16
targetSdkVersion 24

这是我使用导航 View 的地方:

<android.support.v4.widget.DrawerLayout
...
   <android.support.design.widget.CoordinatorLayout
       <android.support.design.widget.AppBarLayout
           <android.support.v7.widget.Toolbar
           .../>
       </android.support.design.widget.AppBarLayout>
   </android.support.design.widget.CoordinatorLayout>
   <android.support.design.widget.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" />
</android.support.v4.widget.DrawerLayout>

日志猫:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.mariano.numberreflexgame, PID: 5006
                                                                        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mariano.numberreflexgame/com.mariano.numberreflexgame.OpeningMenu}: android.view.InflateException: Binary XML file line #52: Error inflating class android.support.design.widget.NavigationView
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                            at dalvik.system.NativeStart.main(Native Method)
                                                                         Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class android.support.design.widget.NavigationView
                                                                            at android.view.LayoutInflater.createView(LayoutInflater.java:621)
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
                                                                            at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                                            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                            at com.mariano.numberreflexgame.OpeningMenu.onCreate(OpeningMenu.java:109)
                                                                            at android.app.Activity.performCreate(Activity.java:5231)
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:136) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5017) 
                                                                            at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                            at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                            at dalvik.system.NativeStart.main(Native Method) 
                                                                         Caused by: java.lang.reflect.InvocationTargetException
                                                                            at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
                                                                            at android.view.LayoutInflater.createView(LayoutInflater.java:595)
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 
                                                                            at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                                            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                            at com.mariano.numberreflexgame.OpeningMenu.onCreate(OpeningMenu.java:109) 
                                                                            at android.app.Activity.performCreate(Activity.java:5231) 
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:136) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5017) 
                                                                            at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                            at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                            at dalvik.system.NativeStart.main(Native Method) 
                                                                         Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f02009f
                                                                            at android.content.res.Resources.getValue(Resources.java:1123)
                                                                            at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:313)
                                                                            at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188)
                                                                            at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:181)
                                                                            at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:422)
                                                                            at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:475)
                                                                            at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:436)
                                                                            at android.support.design.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:112)
                                                                            at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:246)
                                                                            at android.support.design.widget.NavigationView.<init>(NavigationView.java:170)
                                                                            at android.support.design.widget.NavigationView.<init>(NavigationView.java:96)
                                                                            at java.lang.reflect.Constructor.constructNative(Native Method) 
                                                                            at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                                                                            at android.view.LayoutInflater.createView(LayoutInflater.java:595) 
                                                                            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 
                                                                            at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                                            at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                                            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                            at com.mariano.numberreflexgame.OpeningMenu.onCreate(OpeningMenu.java:109) 
                                                                            at android.app.Activity.performCreate(Activity.java:5231) 
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:136) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5017) 
                                                                            at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                            at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                            at dalvik.system.NativeStart.main(Native Method) 

从我看到的其他一些答案来看,这是相关 Activity 所应用的主题:

<style name="AppThemeActionBar" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

该应用在 Android 5.0 中运行良好,但在我测试过的 Android 4.4 设备中 100% 崩溃。

有什么想法吗?

谢谢!

最佳答案

看起来 res/drawable-v21 文件夹中有一些菜单图标,但 res/drawable 文件夹中没有它们。

更新:

您可以通过文件中的 id (#0x7f02009f) 找到“问题”资源 app/build/generated/source/r/debug(或release)/you/package/id/R.java

关于java - Inflate NavigationView 在 Android 4.4 及更低版本中导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621947/

相关文章:

java - 想要通过 joda 获取两个不同时区的两个 ISO 8601 时间之间的分钟数

javascript - 将 Material UI 的 TouchRipple 组件应用于自定义元素/组件

java - 在生产者/消费者模式中使用多个生产者和消费者对java中的字符串进行排序有什么好处?

java - 如何使用 graphql-java 和 graphql-java-servlet 编写 GraphQL 订阅的解析器?

java - 使用带有 GridBagConstraints 的 GridBagLayout 进行 Swing

android - Lollipop 设备的共享元素转换崩溃

javascript - 下拉 | Material 设计 |两个元素 |重叠

java - 我们想将字段值与结果值结合起来以产生结果作为映射图

Android如何查看gps是否连接到卫星?

android - 使用 Facebook 错误代码 : 1349195 [ IONIC ] 登录