详细错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.demo.xxx/com.demo.xxx.ui.login.LoginActivity}: android.view.InflateException: Binary XML file line #195: Error inflating class Button
导致原因:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ripple_round_blue.xml from drawable resource ID #0x7f02010b
1、刚开始以为对应xml布局文件对应的button的id写错了,在activity当中找不到,检查发现,发现id是对的
2、然后想到会不会是button的id名字和drawable当中的命名冲突,于是又把button的id名字换了一个,运行发现依然不行,顺着错误下方找,发现下面如下图的错误
看到的第一反应是以为自己大意了 ripple_round_blue.xml布局文件没有写,查找发现,写了
那会是什么问题呢?
既然找不到,那么我是否可以把布局文件当中Button引用的ripple_round_blue.xml资源文件去掉呢?去掉运行,程序可以跑起来?
既然找不到,要么就是没写,再者其他情况就是不兼容,人家Button压根不支持,所以才提示找不到,再次返回仔细查看资源文件ripple_round_blue.xml,如下图:
是的,没错,ripple,这个只在Android5.0以上版本出现,5.0以下的版本都不支持
当然这个资源文件放到drawable-v21是可以的,如下图:
于是乎,把drawable目录下的资源文件ripple_round_blue.xml改成shape,如下图:
运行,OK
这里还是有遗憾,本意是想做控件水波纹效果,但是坑爹的Android低版本不兼容高版本的特性ripple,
待续,研究下,看有无通用的selector来实现通用的水波纹效果……