若程序一运行 主界面就报错 提示XXX停止运行 ,
1.log 中给的提示是 这一行报错
setContentView(R.layout.welcome_layout);
2.定位到是XML 文件有错 ,然后 接着看log,提示说 Binary XML file line #59: Error inflating class ImageButton XML 中第59行 有错。之后找到imageButton ,
3.又看到 Resource is not a Drawable (color or path): 此时查看 是 src 还是background 中 引用了drawable ,但是这个drawable 是png 还是xml呢? 然后 进入到res 目录下看到 因为 使用V7 所以出现的 drawable-v21 这个目录 这个目录下 原本 只能放xml 文件,但是发现一张png 图片 错误的放在里面。
解决办法: 把 png 图片 放到drawable-xhdpi 这种资源包下 即可
android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f02004a a=-1 r=0x7f02004a}
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.bala.welcomescreens, PID: 10894 java.lang.RuntimeException: Unable to startactivityComponentInfo{com.bala.welcomescreens/com.bala.welcomescreens.IntroScreenActivity}: android.view.InflateException: Binary XML file line #59: Error inflating class ImageButton
——————————————————————————————
从 github上获取的项目 用 gradle构建时 出现的错误。
注意:
前几天在github 上 问了大神,大神回复我了,具体是兼容的问题,也就是版本问题
.png 放在drawable -v21 支持API 21 以上的 ,而我当时用的手机是19 所以导致的这个错误,所以 一个很好的教训 ,现在开发 要多注意版本兼容问题。
大神的回复 如下:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion < android.os.Build.VERSION_CODES.LOLLIPOP){
// Do something for lollipop and above versions
} else{
// do something for phones running an SDK before lollipop
}