android自定义控件inflate报错view.inflate.exception

为了方便动态使用自定义KeyboardView, 对其进行了封装

public class KeyboardView extends FrameLayout {
	private Context mcontext;
	
	public KeyboardView(Context context) {
		super(context);
		
		mcontext = context;
		initComponents();
	}
}	

但是每次在MainActivity中执行到加载的时候:

keyboardView = (KeyboardView)stub.inflate();


就会报错: view.inflate.exception, 首先发现在xml中自己直接使用了:


  标签, 而androd有个自带的控件:

android.inputmethodservice.KeyboardView, 所以将xml中标签改成了:


但是问题依旧, 后来突然想到在重载FrameLayout的时候, 还有两个构造方法没有覆盖, 然后在代码中加上另外两个方法:

public class KeyboardView extends FrameLayout {
	private Context mcontext;
	
	public KeyboardView(Context context) {
		super(context);
		
		mcontext = context;
		initComponents();
	}
	
	public KeyboardView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);

		mcontext = context;
		initComponents();
	}

	public KeyboardView(Context context, AttributeSet attrs) {
		super(context, attrs);

		mcontext = context;
		initComponents();
	}
}


然后报错消失, 执行正常.

你可能感兴趣的:(android开发)