Caused by: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView

今天不学习,明天变垃圾。

Caused by: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView Android5.0~6.0之间的兼容性问题

BottomNavigationView inflating错误问题

最近刚好跑一个demo,在Android studio 上编译,运行在Android5.1 的手机上,结果程序一运行就闪退。报错原因如下:
图一

问题分析

由于BottomNavigationView是android.material包里的控件,报错的原因首先考虑兼容性问题,下面逐一分析:

  1. 系统版本导致兼容性分析 。依次在Android6.0、Android7.0、Android8.0虚拟机上面测试,测试结果如下:android6.0-闪退,android7.0、8.0-成功运行。得出结论:android7.0以下程序运行闪退,而android7.0以上则成功运行。
  2. 排除android7.0增加的FileProvider导致的崩溃问题
  3. 新建一个带Bottom Navigation Activity Project,观察其在android5.0和6.0的运行情况。结果发现刚新建的Project运行正常。
    在这里插入图片描述
  4. 通过Beyond Compare 对比两个项目之间的差异,发现新建的带BottomNavigationView 的项目,其BottomNavigationView 的menu属性中指定的icon的资源是放在drawable 目录下,如下图所示。
    在这里插入图片描述
  5. 对比发现报错的project 中BottomNavigationView 的menu属性中的icon属性指定的图片则放在了drawable-v24目录下(比如下图tabbar_home.png只有drawable-v24目录下才有),众所周知,drawable-v24目录是android7.0以上才能访问的资源目录,同理还有mipmap-anydpi-v26也是android8.0以上才能访问的资源目录。
    在这里插入图片描述

总结

综上所述,其项目闪退原因是:在android7.0以下运行该程序,导致BottomNavigationView 中的menu属性获取不到drawable-v24文件夹中的资源,导致程序奔溃。解决方法是:把BottomNavigationView中menu属性用到的drawable-v24文件夹中的图片资源复制一份到drawable文件夹中即可解决。
在这里插入图片描述
最后需要注意的是:不同的资源文件目录可能对应着不同的android版本号,比如上图所示drawable-v24对应的版本是android7.0以上,mipmap-anydpi-v26对应的版本是android8.0以上。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值