首页 > 解决方案 > 自定义视图类正在抛出:java.lang.InstantiationException:java.lang.Class 没有零参数构造函数

问题描述

我没有得到的是无论如何它都不起作用,这应该使用默认构造函数,因此它们不能被遗漏或留空。这甚至不是我编写的全部代码,我将问题代码与其他代码分开。我所需要的只是让它停止崩溃,这样我就可以测试我的应用程序了。如果有人可以在这里帮助我,我将不胜感激

public class CustomView extends View {

private Paint background;
private Paint Lines;
private Paint blue, red, green, white;
private int rows, columns;
private Drawable board;

private boolean GameOver = false;

public CustomView(Context context) {
    super(context);

    init(null);
}

public CustomView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);

    init(attrs);

    background = new Paint();
    background.setColor(0);
    background.setStyle(Paint.Style.FILL);

    Lines = new Paint();
    Lines.setColor(0xffffff);
}

private void init(@Nullable AttributeSet attr) {
}


protected void onMeasure(int widthMeasure, int heightMeasure) {
    int width = MeasureSpec.getSize(widthMeasure);
    int height = MeasureSpec.getSize(heightMeasure);

    // Ensure the board is a square
    int dimension = Math.min(width, height);

    setMeasuredDimension(dimension, dimension);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //we draw the board
    drawBoard(canvas);

}

private void drawBoard(Canvas canvas) {
    rows = 10;
    columns = 10;

    // We set the outline of the whole board
    canvas.drawRect(0, 0, getWidth(), getHeight(), background);

    float startx = 0;
    float starty = 0;

    float endx = getWidth() / columns;
    float endy = getWidth() / rows;


    //Here we draw the horizontal lines first
    for (int i = 0; i <= 9; i++) {
        starty = i * getHeight() / rows;
        canvas.drawLine(startx, starty, endx, endy, Lines);
    }

    //Now we draw the vertical lines
    for (int j = 0; j <= 9; j++) {
        startx = j * getWidth() / columns;
        canvas.drawLine(startx, starty, endx, endy, Lines);
    }
    //With this the squares should be drawn

}

E / AndroidRuntime:致命异常:主进程:com.example.cassandra_lee_2939561_minesweeper,PID:31959 java.lang.RuntimeException:无法实例化活动ComponentInfo {com.example.cassandra_lee_2939561_minesweeper/com.example.cassandra_lee_2939561_minesweeper.CustomView}:java.lang。 InstantiationException: java.lang.Class<com.example.cassandra_lee_2939561_minesweeper.CustomView> 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2841) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 没有零参数构造函数) 在 android.app.ActivityThread.-wrap11(Unknown Source:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android .os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread。main(ActivityThread.java:6944) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 在 com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:1374) 原因:java.lang.InstantiationException: java.lang.Class<com.example.cassandra_lee_2939561_minesweeper.CustomView> 在 java.lang.Class.newInstance(Native) 没有零参数构造函数方法)在 android.app.Instrumentation.newActivity(Instrumentation.java:1180) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2831) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 在 android。 app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper .在 com.android.internal.os.Zygote$MethodAndArgsCaller 的 java.lang.reflect.Method.invoke(Native Method) 的 android.app.ActivityThread.main(ActivityThread.java:6944) 的循环(Looper.java:164)。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 处运行 (Zygote.java:327) 

标签: javaandroid-studiocustom-view

解决方案


没关系,我自己修好了谢谢支持


推荐阅读