构造函数请求浮动它已经应该浮动

时间:2012-11-10 14:45:55

标签: java android constructor

我正在关注动态壁纸的在线教程。在此期间,我遇到了一个我觉得奇怪的问题。问题是下面代码中的构造函数MyPoint说它正在获取String,int,int并且需要String,float,float。但是,此构造函数中的x和y引用本地浮点数 x和y。我通过在构造函数中选择x或y进行检查,并且本地浮点数x或y会亮起,因此它应该将浮点数作为输入。那为什么会出现这个错误?

@Override
public void onTouchEvent(MotionEvent event) {
if (touchEnabled) {

  float x = event.getX();
  float y = event.getY();
  SurfaceHolder holder = getSurfaceHolder();
  Canvas canvas = null;
  try {
    canvas = holder.lockCanvas();
    if (canvas != null) {
      canvas.drawColor(Color.BLACK);
      circles.clear();
      circles.add(new MyPoint(String.valueOf(circles.size() + 1), x, y));
      drawCircles(canvas, circles);

    }
  } finally {
    if (canvas != null)
      holder.unlockCanvasAndPost(canvas);
  }
  super.onTouchEvent(event);
}
}

修改

确切的错误是:“构造函数MyPoint(String,float,float)未定义”

使用快速修复选项:“将构造函数MyPoint(String,int,int)更改为MyPoint(String,float,float)”

1 个答案:

答案 0 :(得分:2)

构造函数不会请求任何内容。它需要您在构造函数签名中定义的任何类型的值。如果你没有提供正确类型的值,那么编译器就无法编译你的代码,因为你告诉它通过它的构造函数接收不存在的String,float,float来实例化MyPoint的实例。

因此,错误至少是“MyPoint”类中的错误。如果MyPoint构造函数确实需要整数,您可能也会在您显示的代码中出现错误。但是,看看你的代码,似乎浮动更有可能。

错误及其解决方案很简单。

在MyPoint中,你有

public MyPoint(String name, int x, int y);

你也应该

public MyPoint(String name, float x, float y);

我假设你想要两个。如果您不需要接收x和y作为整数的构造函数,那么只需更改它。