Android开发求助:启动MainActivity时加载NavigationView类失败
先看看你遇到的错误日志:
E/AndroidRuntime: 致命异常: main
进程: com.example.microsoft.products, PID: 2399
java.lang.RuntimeException: 无法启动活动ComponentInfo{com.example.microsoft.products/com.example.microsoft.products.MainActivity}: android.view.InflateException: Binary XML文件第0行: Binary XML文件第0行: 加载android.support.design.widget.NavigationView类失败
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) ...
这个问题本质是布局加载时找不到NavigationView的对应类,我整理了几个最常见的解决思路,你可以挨个排查:
检查依赖库配置
如果你还在用旧的Support库,务必确保build.gradle(Module级别)里引入了design库,而且版本要和其他Support库保持一致:implementation 'com.android.support:design:28.0.0'要是已经迁移到AndroidX了,就得换成Material组件库,同时更新依赖:
implementation 'com.google.android.material:material:1.9.0' // 可以用最新稳定版修正布局里的类路径
这是很多人踩坑的点:如果用了AndroidX,布局XML里的NavigationView标签路径必须改成AndroidX的,不能再用旧的support包路径。把:<android.support.design.widget.NavigationView ... />改成:
<com.google.android.material.navigation.NavigationView ... />确认主题配置正确
NavigationView依赖Material主题才能正常工作,去styles.xml里检查你的Activity主题,必须是继承自Theme.MaterialComponents系列的,比如:<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"> <!-- 其他主题配置 --> </style>别用旧的
Theme.AppCompat系列,不然控件初始化会出问题。清理缓存重建项目
有时候Android Studio的缓存会搞事情,导致类加载异常。试试点击顶部菜单栏的Build -> Clean Project,然后Build -> Rebuild Project;或者直接File -> Invalidate Caches...,选择Invalidate and Restart,大概率能解决缓存导致的问题。
内容的提问来源于stack exchange,提问作者ahmedaburaihan

