您的位置:首页 > 移动开发 > Android开发

Android Bug:Custom view * is not using the 2- or 3-argument

2016-01-21 10:15 573 查看
出现这个问题的原因是自定义控件缺少构造方法:

比如:这有三个构造方法,一开始写了一个,运行就崩溃,补全了之后就好了

public class TextCopy extends EditText {
private int off; //字符串的偏移值

// 构造方法1
public TextCopy(Context context) {
super(context);
initialize();
}
// 构造方法2
public TextCopy(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
// 构造方法3
public TextCopy(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize();
}

private void initialize() {
setGravity(Gravity.TOP);
setBackgroundColor(Color.WHITE);
}

@Override
protected void onCreateContextMenu(ContextMenu menu) {
//不做任何处理,为了阻止长按的时候弹出上下文菜单
}

@Override
public boolean getDefaultEditable() {
return false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
Layout layout = getLayout();
int line = 0;
switch (action) {
case MotionEvent.ACTION_DOWN:
line = layout.getLineForVertical(getScrollY() + (int) event.getY());
off = layout.getOffsetForHorizontal(line, (int) event.getX());
Selection.setSelection(getEditableText(), off);
break;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
line = layout.getLineForVertical(getScrollY() + (int) event.getY());
int curOff = layout.getOffsetForHorizontal(line, (int) event.getX());
Selection.setSelection(getEditableText(), off, curOff);
break;
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  自定义控件bug