导航抽屉开发遇崩溃:Error inflating class NavigationView异常求助
看起来你遇到的Error inflating class android.support.design.widget.NavigationView是Design Support库控件常见的崩溃场景,我帮你梳理几个最可能的原因和对应的解决办法:
1. 先检查Menu资源文件是否正确
你的布局里给NavigationView指定了app:menu="@menu/menu",首先要确认res/menu/menu.xml这个文件确实存在,而且XML语法没有错误(比如有没有遗漏闭合标签、item的id是否合法等)。
一个标准的侧边栏菜单示例应该是这样的:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:title="首页"/> <item android:id="@+id/nav_settings" android:title="设置"/> </group> </menu>
如果这个文件不存在或者有语法错误,直接会导致NavigationView无法Inflate。
2. 确保Activity使用AppCompat主题
NavigationView属于Design Support库,必须依赖AppCompat系列主题才能正常工作。你需要检查两个地方:
- 在
AndroidManifest.xml中,MainActivity的主题要指定为AppCompat子类:
<activity android:name=".MainActivity" android:theme="@style/AppTheme"> </activity>
- 在
res/values/styles.xml中,AppTheme必须继承自Theme.AppCompat相关主题:
<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>
如果用了原生的Theme.Holo或者其他非AppCompat主题,Design库的控件会直接Inflate失败。
3. 补全NavigationView的布局属性
你的NavigationView缺少了android:layout_gravity属性,这是DrawerLayout中侧边栏必须的属性,用来指定侧边栏从哪个方向滑入。修改后的布局应该是:
<android.support.design.widget.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" <!-- 必须添加这个属性 --> app:menu="@menu/menu" />
虽然这个属性不一定是直接导致崩溃的原因,但缺失它会引发DrawerLayout的布局逻辑异常,进而可能触发Inflate错误。
4. 清理项目缓存并重建
有时候Android Studio的缓存会导致依赖或者资源加载异常,你可以试试以下步骤:
- 点击顶部菜单栏的
Build -> Clean Project - 接着点击
Build -> Rebuild Project - 最后点击
File -> Sync Project with Gradle Files
完成后再运行项目,看看崩溃是否消失。
内容的提问来源于stack exchange,提问作者a k
相关产品推荐
相关产品推荐

