NavigationView填充错误:含导航抽屉的Activity崩溃(AS 3.1更新后)
嘿,我之前也踩过类似的坑!升级Android Studio 3.1后Navigation Drawer崩溃,大概率是版本兼容或者构建配置的问题,给你几个针对性的排查方向和解决方案:
1. 彻底统一所有支持库版本(重点!)
你说已经试过同版本支持库,但可能遗漏了隐藏的依赖——很多第三方库会自带不同版本的支持库,悄悄导致冲突。
- 先在项目根目录的
build.gradle里定义统一的版本变量:ext { supportLibVersion = '27.1.1' // Android Studio 3.1对应的稳定支持库版本 } - 然后在Module级的
build.gradle里,所有com.android.support开头的依赖都用这个变量:dependencies { implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:design:$supportLibVersion" implementation "com.android.support:support-v4:$supportLibVersion" // 其他依赖... } - 强制统一所有依赖的支持库版本,避免第三方库搞事情:
configurations.all { resolutionStrategy.force "com.android.support:support-v4:$supportLibVersion" resolutionStrategy.force "com.android.support:appcompat-v7:$supportLibVersion" resolutionStrategy.force "com.android.support:design:$supportLibVersion" } - 用命令查看依赖树,确认没有版本不一致的情况:
./gradlew app:dependencies # 替换app为你的Module名称
2. 匹配Gradle插件与Gradle版本
Android Studio 3.1要求对应的Gradle插件版本是3.1.0及以上,同时Gradle版本要对应:
- 项目根目录
build.gradle的classpath:dependencies { classpath 'com.android.tools.build:gradle:3.1.4' // 3.1.x系列的稳定版本 } gradle/wrapper/gradle-wrapper.properties里的distributionUrl:distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
3. 检查Navigation Drawer布局文件(activity_welcome_drawer)
布局文件的结构错误也会导致InflateException崩溃:
- 确保
DrawerLayout是根布局,内部必须包含主内容布局和NavigationView两个子视图 - 检查NavigationView的
app:headerLayout和app:menu引用的资源是否存在,有没有拼写错误 - 正确的布局结构示例:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <!-- 主内容区域 --> <include layout="@layout/app_bar_welcome" /> <!-- 导航抽屉 --> <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_welcome" app:menu="@menu/activity_welcome_drawer" /> </android.support.v4.widget.DrawerLayout>
4. 确认主题是AppCompat系列
Navigation Drawer依赖AppCompat主题,如果你的AppTheme用了非AppCompat主题(比如Theme.Material.Light),肯定会崩溃:
- 在
res/values/styles.xml里检查:<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
5. 清理缓存+重建项目
Android Studio升级后缓存容易出问题,试试这招:
- 点击顶部菜单
File -> Invalidate Caches / Restart...,选择Invalidate and Restart - 重启后执行
./gradlew clean build命令清理构建缓存
如果还是不行,把崩溃日志的完整Stack Trace贴出来,我可以帮你更精准定位!
内容的提问来源于stack exchange,提问作者Wahdat Jan
相关产品推荐
相关产品推荐

