java - 自定义视图类正在抛出: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)
解决方案
没关系,我自己修好了谢谢支持
推荐阅读
- node.js - 在带有 CloudBuild 的 App Engine 上部署 VueJs + Node 应用程序
- c# - 如何使用 API 组合两个 C# 表达式?
- php - 有没有办法在 php 内部联接查询中引用保存在 phpmyadmin 数据库中的 json 编码数据?
- javascript - 如何检查字符串的第一个字符是否是数字作为 *ngIf 中的条件
- java - CaffeineCacheManager() 构造函数需要 cacheName 吗?
- mapbox-gl - 如何更改 Nebula.gl 中引导线的大小?
- javascript - 当使用 discord.js 更改角色时尝试检查角色时,“无法读取未定义的属性“id””
- sql - IIF 语句显示 0 我知道有一个值
- r - 在 r 中识别负值的问题
- python - ValueError:列必须与 groupby() 中的键长度相同