就我一直担心或在实践中看到的那样,当在运行时找不到引用的类时,就会出现错误。我非常确定 Tap是通过MenuScreen的初始化创建的,但我可能做错了。这是我第一次尝试菜单,或者在LibGDX中有多个屏幕。
这是MenuScreen类的第一部分,它在AndroidLauncher.java中初始化(initalize(new MenuScreen(new Tap()), config);
)
public class MenuScreen extends Game implements Screen {
...
Game g;
public MenuScreen(Game g) {
create();
this.g = g;
}
Tap.java唯一相关的部分
public class Tap extends Game implements ActionListener, Screen {
...
public Tap() {
create();
}
我似乎无法弄清楚为什么它不会起作用。我错过了一些明显的东西吗我尝试了一些不同的东西,但在大多数情况下,我还没有足够的理解来做出任何真正的改变。
感谢。
编辑:堆栈跟踪
12-15 22:42:35.614: E/AndroidRuntime(16426): FATAL EXCEPTION: main
12-15 22:42:35.614: E/AndroidRuntime(16426): java.lang.NoClassDefFoundError: com.joelhunter.game.Tap
12-15 22:42:35.614: E/AndroidRuntime(16426): at com.joelhunter.game.android.AndroidLauncher.onCreate(AndroidLauncher.java:16)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.Activity.performCreate(Activity.java:5133)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.ActivityThread.access$600(ActivityThread.java:150)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.os.Handler.dispatchMessage(Handler.java:99)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.os.Looper.loop(Looper.java:213)
12-15 22:42:35.614: E/AndroidRuntime(16426): at android.app.ActivityThread.main(ActivityThread.java:5225)
12-15 22:42:35.614: E/AndroidRuntime(16426): at java.lang.reflect.Method.invokeNative(Native Method)
12-15 22:42:35.614: E/AndroidRuntime(16426): at java.lang.reflect.Method.invoke(Method.java:525)
12-15 22:42:35.614: E/AndroidRuntime(16426): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
12-15 22:42:35.614: E/AndroidRuntime(16426): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
12-15 22:42:35.614: E/AndroidRuntime(16426): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:3)
你误解了游戏和屏幕的使用方式。
你必须只有一个游戏:
public class Tap extends Game{
...
public Tap() {
setScreen(new MenuScreen(this));
}
和几个屏幕:
public class MenuScreen implements Screen {
...
Game g;
public MenuScreen(Game g){
create();
this.g = g;
//if touch on "play" button:
g.setScreen(new GameScreen(this));
}
例如GameScreen:
public class GameScreen implements Screen {
...
Game g;
public GameScreen(Game g){
create();
this.g = g;
}
等等。
同时检查核心项目是否已添加为Android和桌面项目的依赖项。
右键点击Android /桌面 - > Java构建路径 - > “项目”选项卡,并检查是否添加了核心项目。如果不是,请添加它。
答案 1 :(得分:1)
就我一直担心或在实践中看到的那样,当在运行时找不到引用的类时会出现错误
这是正确的,但不是因为它不存在。通常它意味着文件中的类不是应该在文件中的类,因为它的名称或其包不同于文件名和它所在的directoy所建议的类名。