You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 6.0.1下BottomNavigationView加载致应用启动崩溃问题

问题定位

从logcat最底层的报错可以直接定位崩溃原因:

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070069

崩溃发生在BottomNavigationView初始化、加载绑定的菜单资源阶段,本质是你给底部导航菜单项配置的图标、或者底部导航相关的drawable资源,在Android 6.0.1(API 23)系统上无法被正常解析,Android 10(API 29)及以上版本因为原生支持更多drawable格式、资源解析逻辑更宽松,所以不会触发崩溃。

分步修复方案
  • 优先排查底部导航菜单资源
    打开res/menu/bottom_nav_menu.xml,逐一检查5个菜单项的android:icon属性指向的资源:
    • 确认图标资源没有存放在drawable-v24、drawable-v26这类带高版本限定的资源目录下,必须在无版本后缀的drawable目录、或者对应密度的通用drawable目录(如drawable-hdpi)下存放一份可在API23上使用的图标资源
    • 如果你用的是VectorDrawable矢量图标,必须开启AppCompat矢量图兼容:
      1. 在模块级build.gradle的defaultConfig作用域内添加配置:
      android {
          defaultConfig {
              // ... 其他现有配置
              vectorDrawables.useSupportLibrary = true
          }
      }
      
      1. 检查矢量图xml内容,不要在<path>节点的android:fillColor属性里直接引用颜色资源(API23及以下不支持该写法),直接填写十六进制色值即可
  • 排查布局中引用的自定义drawable
    你在布局里给根布局、BottomNavigationView分别设置了@drawable/page_gradient、@drawable/nav_background两个自定义背景:
    • 检查这两个drawable的xml代码,删除所有只在API24及以上版本才支持的属性(比如android:tileModeX、android:tileModeY,渐变节点里的高版本专属属性等),或者为低版本单独做适配
  • 检查主题配置
    确认你的应用Activity使用的主题继承自Theme.MaterialComponents系列(或AppCompat系列主题),不要继承系统原生的android:Theme类主题,否则会导致Material组件加载兼容资源失败。
额外优化建议

你已经在代码里接入了ViewBinding,不需要再重复调用findViewById获取控件实例,直接通过binding对象访问控件即可,能减少空指针风险:

// 替换原来的findViewById写法
Toolbar toolbar = binding.toolbar;
BottomNavigationView bottomNavigationView = binding.bottomNavigationView;

内容的提问来源于stack exchange,提问作者Sayooj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:45:35