画一个球时,Android应用程序强制关闭? [英] Android app force closes when painting a ball?

查看:189
本文介绍了画一个球时,Android应用程序强制关闭?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在屏幕上绘制一个球,但它强制关闭。事情错了。

 球B =新球();保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.ingame);
    开始();
}私人无效的start(){
    球B =新球();
}公共无效漆(图形G){
    b.paint(G);
    g.setColor(Color.GREEN);
    g.fillOval(X半径,Y半径,半径* 2,半径* 2);
}

下面是我的LogCat中:

21 10-15: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:无法解析新实例417(LCOM /游戏/ src目录/球)在LCOM /乔丹/蹦极/弹跳/ Cracka;
10-15 21:02:45.492:D / dalvikvm(7847):VFY:在0x002b更换运code 0x22
10-15 21:02:45.492:D / dalvikvm(7847):VFY:死code 0x002d-0032在LCOM /乔丹/蹦极/弹跳/ 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:无法解析新实例417(LCOM /游戏/ src目录/球)在LCOM /乔丹/蹦极/弹跳/ Cracka;

21 10-15:02:45.496:D / dalvikvm(7847):VFY:为0x0000

替换运code 0x22

21 10-15:02:45.500:D / dalvikvm(7847):VFY:死code 0x0002-0005在LCOM /乔丹/蹦极/弹跳/ Cracka;。开始()V

21 10-15:02:45.500:W / dalvikvm(7847):VFY:无法找到类签名引用(Ljava / AWT /图形;)

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

21 10-15:02:45.503:W / dalvikvm(7847):VFY:无法解析虚方法3021:LCOM /游戏/ src目录/球; .paint(Ljava / AWT /图形;)V

21 10-15:02:45.503:D / dalvikvm(7847):VFY:在0×0002

替换运code 0x6e

21 10-15:02:45.503:D / dalvikvm(7847):VFY:在LCOM /乔丹/蹦极/弹跳/ Cracka死code 0x0005-001f; .paint(Ljava / AWT /图形;) V

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

21 10-15:02:45.507:W / dalvikvm(7847):主题ID = 1:螺纹未捕获的异常退出(组= 0x4001e578)
10-15 21:02:45.527:E / AndroidRuntime(7847):致命异常:主要

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

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

21 10-15:02:45.527:E / AndroidRuntime(7847):在java.lang.Class.newInstanceImpl(本机方法)

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

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

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

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

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

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

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

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

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

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

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

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

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

21 10-15:02:45.527:E / AndroidRuntime(7847):在dalvik.system.NativeStart.main(本机方法)


解决方案

我不知道为什么你定义一个局部变量b在start()方法,因为你已经定义了一个为类成员。您在启动(创建)一个将尽快丢失的start()的回报。

另外:你创建成员对象将是长期实例化之前的onCreate()被调用。是否有足够的情况下可球在创建活动时,(),以创建成功?没有看到源$ C ​​$ C到球(),我们不能告诉。

您logcat的输出表明,对于球类没有被发现。你写的吗?你把它放在正确的目录中的Eclipse可以找到它?

这个问题和你的后续似乎表明你非常新到Android编程,并有可能对Java。如果你是新来的Java,我会觉得好好好的,想这么快的Andr​​oid学习。 Android是不是面向初学者的编程环境。

不过,我建议你做一些教程,以熟悉系统启动了。然后,编写自己的应用程序,找到一个教程,大多数非常相似,你想做什么,把它复制,并开始进行修改。我几乎总是通过复制旧项目开始新的项目。这样一来,你知道文件系统布局等等可能是正确的,开始吧。

最后,在你的Eclipse窗口的底部,你会看到标有问题选项卡。这可以是什么乱子找出非常有用的。你的情况,解释为什么没有被发现球很可能是在那里。当然,请检查您的控制台和logcat的标签以及

I'm trying to paint a ball on the screen, but it force closes. Something is going wrong.

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);
}

Here's my LogCat:

10-15 21:02:45.492: E/dalvikvm(7847): Could not find class 'com.game.src.Ball', referenced from method com.jordan.bungee.bounce.Cracka. 10-15 21:02:45.492: W/dalvikvm(7847): VFY: unable to resolve new-instance 417 (Lcom/game/src/Ball;) in Lcom/jordan/bungee/bounce/Cracka; 10-15 21:02:45.492: D/dalvikvm(7847): VFY: replacing opcode 0x22 at 0x002b 10-15 21:02:45.492: D/dalvikvm(7847): VFY: dead code 0x002d-0032 in Lcom/jordan/bungee/bounce/Cracka;. ()V 10-15 21:02:45.496: E/dalvikvm(7847): Could not find class 'com.game.src.Ball', referenced from method com.jordan.bungee.bounce.Cracka.start 10-15 21:02:45.496: W/dalvikvm(7847): VFY: unable to resolve new-instance 417 (Lcom/game/src/Ball;) in Lcom/jordan/bungee/bounce/Cracka;

10-15 21:02:45.496: D/dalvikvm(7847): VFY: replacing opcode 0x22 at 0x0000

10-15 21:02:45.500: D/dalvikvm(7847): VFY: dead code 0x0002-0005 in Lcom/jordan/bungee/bounce/Cracka;.start ()V

10-15 21:02:45.500: W/dalvikvm(7847): VFY: unable to find class referenced in signature (Ljava/awt/Graphics;)

10-15 21:02:45.503: I/dalvikvm(7847): Could not find method com.game.src.Ball.paint, referenced from method com.jordan.bungee.bounce.Cracka.paint

10-15 21:02:45.503: W/dalvikvm(7847): VFY: unable to resolve virtual method 3021: Lcom/game/src/Ball;.paint (Ljava/awt/Graphics;)V

10-15 21:02:45.503: D/dalvikvm(7847): VFY: replacing opcode 0x6e at 0x0002

10-15 21:02:45.503: D/dalvikvm(7847): VFY: dead code 0x0005-001f in Lcom/jordan/bungee/bounce/Cracka;.paint (Ljava/awt/Graphics;)V

10-15 21:02:45.507: D/AndroidRuntime(7847): Shutting down VM

10-15 21:02:45.507: W/dalvikvm(7847): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 10-15 21:02:45.527: E/AndroidRuntime(7847): FATAL EXCEPTION: 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): at java.lang.Class.newInstance(Class.java:1409)

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

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

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

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

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

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

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

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

解决方案

I'm not sure why you're defining a local variable b in your start() method since you've already defined one as a class member. The one you created in start() will be lost as soon as start() returns.

Also: the member object you create will be instantiated long before onCreate() is called. Is there enough context available when the Activity is created for Ball() to be created successfully? Without seeing the source code to Ball() we can't tell.

Your logcat output indicates that the class for Ball was not found. Did you write it? Did you put it in the right directory where Eclipse could find it?

This question and your follow-ups seem to indicate that you're extremely new to Android programming, and possibly new to Java. If you're new to Java, I would think good and hard about trying to learn Android so soon. Android is not a programming environment for beginners.

That said, I suggest you start out by doing some of the tutorials to familiarize yourself with the system. Then, to write your own application, find a tutorial that most closely resembled what you're trying to do, copy it, and start making modifications. I almost always start new projects by copying old projects. This way, you know that filesystem layout and so forth is probably correct to begin it.

Finally, at the bottom of your Eclipse window, you'll see a tab labeled "Problems". This can be very useful for finding out what's gone wrong. In your case, the explanation to why Ball wasn't found is likely to be there. And of course, check your Console and Logcat tabs as well.

这篇关于画一个球时,Android应用程序强制关闭?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆