Android自定义View出现android.view.InflateException的一种解决方法
Posted YuNansen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android自定义View出现android.view.InflateException的一种解决方法相关的知识,希望对你有一定的参考价值。
今天在开发的时候,在使用一个自定义的ViewPager的时候,程序出现了如下的错误:
android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.android.app.view.DispatchViewPager
详细报错如下图:
而我的出错代码如下:
自定义ViewPager:
public class DispatchViewPager extends ViewPager
public DispatchViewPager(Context context)
super(context);
private DispatchTouch dispatchTouch;
public interface DispatchTouch
void dispatch(MotionEvent ev);
public void setDispatchTouch(DispatchTouch d)
dispatchTouch = d;
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
if(dispatchTouch != null)
dispatchTouch.dispatch(ev);
return super.dispatchTouchEvent(ev);
xml中的引用:
<com.android.app.view.DispatchViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
上面的代码就会报这样的bug:Error inflating class com.android.app.view.DispatchViewPager,后来经过尝试,发现了这个bug的解决方法:在自己的自定义View中加入如下代码:
public DispatchViewPager(Context context,AttributeSet paramAttributeSet)
super(context,paramAttributeSet);
也就是带AttributeSet属性的构造函数。
完整自定义代码如下代码如下:
public class DispatchViewPager extends ViewPager
public DispatchViewPager(Context context)
super(context);
public DispatchViewPager(Context context,AttributeSet paramAttributeSet)
super(context,paramAttributeSet);
private DispatchTouch dispatchTouch;
public interface DispatchTouch
void dispatch(MotionEvent ev);
public void setDispatchTouch(DispatchTouch d)
dispatchTouch = d;
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
if(dispatchTouch != null)
dispatchTouch.dispatch(ev);
return super.dispatchTouchEvent(ev);
总结:在出现了如上的bug之后,我们需要在自定义VIew中添加DispatchViewPager(Context context,AttributeSet paramAttributeSet) 构造函数即可。这应该是如上报错的一种解决方式,大家可以尝试一下~
以上是关于Android自定义View出现android.view.InflateException的一种解决方法的主要内容,如果未能解决你的问题,请参考以下文章
android 自定义View onMeasure中 super.onMeasure 和 setMeasuredDimension