天天看点

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的三个构造方法

④:定位到报错的引用位置,并检测引用的资源类型是否正确。

⑤:定位到报错的引用位置,检测改引用的变量在其他的适配文件中是否能找到。

案例

案例① (原因①)

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

案例②(原因②)

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

案例③(原因③)

案例④(原因④)

案例⑤(原因⑤)