android.view.InflateException: Binary XML file line #2: Error inflating class com.xx.view.ToolsBar

1、异常提示

Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class com.xx.xx…view.ToolsBar
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:892)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:802)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
at android.app.Activity.setContentView(Activity.java:2145)
at com.yehu.playerdemo.activitys.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access 800 ( A c t i v i t y T h r e a d . j a v a : 153 ) a t a n d r o i d . a p p . A c t i v i t y T h r e a d 800(ActivityThread.java:153) at android.app.ActivityThread 800(ActivityThread.java:153)atandroid.app.ActivityThreadH.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

2、出现的场景

本人写ToolsBar一个自定义的view集成LinearLayout
但是没有在ToolsBar中对布局进行inflate等操作
分别实现了View的三个构造方法(一/两/三个参数)
直接对相应的View进行findViewById和设置点击事件等操作。
用ToolsBar替换布局中的LinearLayout
然后运行报如上异常

2、分析

①本人的情况是在自定义的ToolsView中使用view之前没有进行inflate所以报错
②包名没写全
③自定义view没写那三个构造方法
④资源引用错误
⑤资源适配在某些设备中引用没有赋值
导致的原因是view没法加载(②,③,④,⑤)或者未加载完却对布局中的一些view进行操作(①)

4、解决方法

①:把写在构造方法中的操作view代码移动到onFinishInflate()中即可

②:检测并写全自定义View的全路径名
③:在自定义View中重写View的三个构造方法
④:定位到报错的引用位置,并检测引用的资源类型是否正确。
⑤:定位到报错的引用位置,检测改引用的变量在其他的适配文件中是否能找到。

案例

案例① (原因①)

在这里插入图片描述
在这里插入图片描述

案例②(原因②)

在这里插入图片描述

案例③(原因③)

案例④(原因④)

案例⑤(原因⑤)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值