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的三个构造方法
④:定位到报错的引用位置,并检测引用的资源类型是否正确。
⑤:定位到报错的引用位置,检测改引用的变量在其他的适配文件中是否能找到。
案例
案例① (原因①)
案例②(原因②)
案例③(原因③)
略
案例④(原因④)
略
案例⑤(原因⑤)
略