Java 我的代码有一个错误
它一直说构造函数是未定义的。我已经在某个地方读到,我需要声明没有参数的构造函数。我只是不知道怎么做 如果有人能帮忙,我对java和编程是新手。我的代码在下面Java 我的代码有一个错误,java,android,Java,Android,它一直说构造函数是未定义的。我已经在某个地方读到,我需要声明没有参数的构造函数。我只是不知道怎么做 如果有人能帮忙,我对java和编程是新手。我的代码在下面 package com.alextrost.onscreenjoystickdemo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics
package com.alextrost.onscreenjoystickdemo;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Handler;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class GameSurface1 extends SurfaceView implements SurfaceHolder.Callback {
private Context _context1;
private GameThread1 _thread1;
private GameControls1 _controls1;
private GameJoystick1 _joystick1;
private Bitmap _pointer;
public GameSurface1(Context context) {
super(context);
// TODO Auto-generated constructor stub
_context1 = context;
init1();
}
private void init1(){
SurfaceHolder holder = getHolder();
holder.addCallback( this);
// A call will be made to start it later
_thread1 = new GameThread1(holder, _context1, new Handler(),this);
setFocusable(true);
_joystick1 = new GameJoystick1(getContext().getResources());
_pointer = (Bitmap)BitmapFactory.decodeResource(getResources(), R.drawable.icon);
//controls
_controls1 = new GameControls1();
setOnTouchListener(_controls1);
}
public void doDraw1(Canvas canvas){
//update the pointer
_controls1.update(null);
//draw the pointer
canvas.drawBitmap(_pointer, _controls1._pointerPosition1.x, _controls1._pointerPosition1.y, null);
//draw the joystick background
canvas.drawBitmap(_joystick1.get_joystickBg(), 50,220, null);
//draw the dragable joystick
canvas.drawBitmap(_joystick1.get_joystick(),_controls1._touchingPoint1.x -357, _controls1._touchingPoint1.y -26, null);
}
//these methods are overridden from the SurfaceView super class. They are automatically called
//when a SurfaceView is created, resumed or suspended.
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {}
private boolean retry1;
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
retry1 = true;
//code to end gameloop
_thread1.state1 = GameThread.STOPED;
while (retry1) {
try {
//code to kill Thread
_thread1.join();
retry1 = false;
} catch (InterruptedException e) {
}
}
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
if(_thread1.state1==GameThread1.PAUSED){
//When game is opened again in the Android OS
_thread1 = new GameThread1(getHolder(), _context1, new Handler(),this);
_thread1.start();
}else{
//creating the game Thread for the first time
_thread1.start();
}
}
public void Update() {
// TODO Auto-generated method stub
}
}
构造函数是与类GameSurface1同名且没有返回值的方法,因此这是一个构造函数:-
public GameSurface1(Context context)
…这是一个没有参数的构造函数:-
public GameSurface1()
来自维基百科:
默认构造函数:
如果程序员没有为实例提供构造函数
类,大多数语言将提供默认构造函数。这个
默认构造函数的行为依赖于语言。可能
将数据成员初始化为零或其他相同的值,也可以这样做
什么都没有。在C++中,如果数组需要默认构造函数
要创建的类对象的数量。其他语言Java、C、VB
.NET没有这样的限制
默认构造函数的示例:
参数化构造函数:
可以接受参数的构造函数称为参数化构造函数
构造器。参数的数量可以大于或等于
one1.在参数化构造函数中声明对象时,
初始值必须作为参数传递给构造函数
作用对象声明的正常方式可能不起作用。这个
构造函数可以显式或隐式调用。方法
隐式调用构造函数也被称为速记
方法
参数化构造函数示例:
请始终在问题中添加错误消息。是的,但GameSurface1扩展了SurfaceView,并且SurfaceView没有无参数构造函数。所以我想添加一个无参数构造函数并不能解决他的问题。那么你不能创建一个无参数构造函数,它告诉你应该在哪里?是的,你回答了我已经读过的部分,我需要声明一个无参数的构造函数。我只是不知道怎么做。。但这里真正的问题是它一直说构造函数是未定义的。我们需要OP的真正错误信息。我回答了问题中唯一可以回答的部分。如果有更多的信息,我会扩展我的答案。是的,真正的问题是它一直说构造函数是未定义的。很抱歉,我让你们搞糊涂了T.塔威引用了你们的话。
public GameSurface1();
public GameSurface1(Context context);