没有空的构造函数不能启动类

时间:2014-03-19 15:48:18

标签: android

我试图运行并编译到我的手机中这段代码:

public class SingleTouchEventView extends View {
  private Paint paint = new Paint();
  private Path path = new Path();

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

    paint.setAntiAlias(true);
    paint.setStrokeWidth(6f);
    paint.setColor(Color.BLACK);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeJoin(Paint.Join.ROUND);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    canvas.drawPath(path, paint);
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    float eventX = event.getX();
    float eventY = event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
      path.moveTo(eventX, eventY);
      return true;
    case MotionEvent.ACTION_MOVE:
      path.lineTo(eventX, eventY);
      break;
    case MotionEvent.ACTION_UP:
      // nothing to do
      break;
    default:
      return false;
    }

    // Schedules a repaint.
    invalidate();
    return true;
  }
} 

但是它崩溃了,我的logcat说了以下内容:

  

无法启动类......没有空构造函数

任何线索我做错了什么?

1 个答案:

答案 0 :(得分:1)

可能是您正在尝试创建如下对象...

SingleTouchEventView view = new SingleTouchEventView ();

但是你没有任何空的构造函数。如果您想暂时解决问题,请在Constructor课程中创建一个空的SingleTouchEventView,如下所示...

public SingleTouchEventView() {

}

当你extends View上课时,你就不能拥有空的构造函数。因此,上述构造函数将通过错误说明......

Implicit super constructor View() is undefined. Must explicitly invoke another constructor

所以,你必须至少通过构造函数传递Context ...现在,你应该用Constructor创建另一个Context,如下所示......

public SingleTouchEventView(Context context) {
    super(context);
}

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

}

当你创建一个SingleTouchEventView类的对象时,你初始化如下......

SingleTouchEventView view = new SingleTouchEventView (getApplicationContext());
相关问题