-3

我试图在屏幕上画一个球,但它强制关闭。出了点问题。

Ball b = new Ball();

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ingame);
    start();
}

private void start() {
    Ball b = new Ball();
}

public void paint(Graphics g) {
    b.paint(g);
    g.setColor(Color.GREEN);
    g.fillOval(x-radius, y-radius, radius*2, radius*2);
}

这是我的 LogCat:

10-15 21:02:45.492: E/dalvikvm(7847): 找不到类 'com.game.src.Ball',引用自方法 com.jordan.bungee.bounce.Cracka。10-15 21:02:45.492: W/dalvikvm(7847): VFY: 无法解析 Lcom/jordan/bungee/bounce/Cracka 中的新实例 417 (Lcom/game/src/Ball;);10-15 21:02:45.492: D/dalvikvm(7847): VFY: 在 0x002b 处替换操作码 0x22 10-15 21:02:45.492: D/dalvikvm(7847): VFY: Lcom/jordan 中的死代码 0x002d-0032 /蹦极/弹跳/Cracka;。()V 10-15 21:02:45.496: E/dalvikvm(7847): 找不到类 'com.game.src.Ball',引用自方法 com.jordan.bungee.bounce.Cracka.start 10-15 21:02:45.496: W/dalvikvm(7847): VFY: 无法解析 Lcom/jordan/bungee/bounce/Cracka 中的新实例 417 (Lcom/game/src/Ball;);

10-15 21:02:45.496: D/dalvikvm(7847): VFY: 在 0x0000 处替换操作码 0x22

10-15 21:02:45.500: D/dalvikvm(7847): VFY: Lcom/jordan/bungee/bounce/Cracka 中的死代码 0x0002-0005;.start ()V

10-15 21:02:45.500: W/dalvikvm(7847): VFY: 无法找到签名中引用的类 (Ljava/awt/Graphics;)

10-15 21:02:45.503: I/dalvikvm(7847): 找不到方法 com.game.src.Ball.paint,引用自方法 com.jordan.bungee.bounce.Cracka.paint

10-15 21:02:45.503: W/dalvikvm(7847): VFY: 无法解析虚拟方法 3021: Lcom/game/src/Ball;.paint (Ljava/awt/Graphics;)V

10-15 21:02:45.503: D/dalvikvm(7847): VFY: 在 0x0002 处替换操作码 0x6e

10-15 21:02:45.503: D/dalvikvm(7847): VFY: Lcom/jordan/bungee/bounce/Cracka 中的死代码 0x0005-001f;.paint (Ljava/awt/Graphics;)V

10-15 21:02:45.507: D/AndroidRuntime(7847): 关闭虚拟机

10-15 21:02:45.507: W/dalvikvm(7847): threadid=1: 线程退出未捕获异常 (group=0x4001e578) 10-15 21:02:45.527: E/AndroidRuntime(7847): 致命异常: main

10-15 21:02:45.527: E/AndroidRuntime(7847): java.lang.NoClassDefFoundError: com.game.src.Ball

10-15 21:02:45.527: E/AndroidRuntime(7847): at com.jordan.bungee.bounce.Cracka.(Cracka.java:22)

10-15 21:02:45.527: E/AndroidRuntime(7847): at java.lang.Class.newInstanceImpl(Native Method)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 java.lang.Class.newInstance(Class.java:1409)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.app.Instrumentation.newActivity(Instrumentation.java:1021)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.os.Handler.dispatchMessage(Handler.java:99)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.os.Looper.loop(Looper.java:130)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 android.app.ActivityThread.main(ActivityThread.java:3687)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 java.lang.reflect.Method.invokeNative(Native Method)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 java.lang.reflect.Method.invoke(Method.java:507)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)

10-15 21:02:45.527: E/AndroidRuntime(7847): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)

10-15 21:02:45.527: E/AndroidRuntime(7847): at dalvik.system.NativeStart.main(Native Method)

4

1 回答 1

0

我不确定为什么要在 start() 方法中定义局部变量 b ,因为您已经将其定义为类成员。一旦 start() 返回,您在 start() 中创建的那个将丢失。

另外:您创建的成员对象将在调用 onCreate() 之前很久就被实例化。为成功创建 Ball() 创建 Activity 时是否有足够的上下文可用?如果没有看到 Ball() 的源代码,我们无法判断。

您的 logcat 输出表明找不到 Ball 的类。你写了吗?您是否将它放在 Eclipse 可以找到它的正确目录中?

这个问题和您的后续行动似乎表明您对 Android 编程非常陌生,并且可能对 Java 很陌生。如果您是 Java 新手,我会认为这么快就尝试学习 Android 是一件好事。Android 不是适合初学者的编程环境。

也就是说,我建议您先学习一些教程来熟悉系统。然后,要编写您自己的应用程序,请找到与您正在尝试做的最相似的教程,复制它并开始进行修改。我几乎总是通过复制旧项目来开始新项目。这样,您就知道文件系统布局等可能是正确的开始它。

最后,在 Eclipse 窗口的底部,您将看到一个标有“问题”的选项卡。这对于找出问题所在非常有用。在您的情况下,关于为什么找不到 Ball 的解释可能就在那里。当然,还要检查您的控制台和 Logcat 选项卡。

于 2012-10-19T00:22:12.320 回答