绘制球时Android应用程序强制关闭?

时间:2012-10-15 21:13:02

标签: java android eclipse logcat

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

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.jordan.bungee.bounce.Cracka引用的类'com.game.src.Ball'。 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 / bungee / bounce / Cracka;中的死代码0x002d-0032; ()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; .start()V

中的死代码0x0002-0005

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:死代码0x0005-001f在Lcom / jordan / bungee / bounce / Cracka; .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):致命异常:主

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):at 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):at java.lang.reflect.Method.invokeNative(Native Method)

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

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

10-15 21:02:45.527:E / AndroidRuntime(7847):at 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)

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

最后,在Eclipse窗口的底部,您会看到一个标记为“Problems”的选项卡。这对于找出出了什么问题非常有用。在你的情况下,为什么没有找到Ball的解释很可能就在那里。当然,也请检查您的Console和Logcat选项卡。