我正在尝试在屏幕上画一个球,但它强行关闭。出了点问题。
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-000510-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)
答案 0 :(得分:0)
我不确定你为什么要在start()方法中定义局部变量b,因为你已经将其定义为一个类成员。一旦start()返回,你在start()中创建的那个就会丢失。
另外:您创建的成员对象将在调用onCreate()之前很久就被实例化。创建活动以便成功创建Ball()时是否有足够的上下文可用?没有看到Ball()的源代码,我们无法分辨。
您的logcat输出表明找不到Ball的类。你写了吗?您是否将它放在Eclipse可以找到的正确目录中?
这个问题和你的后续行动似乎表明你对Android编程非常陌生,而且可能是Java新手。如果您是Java新手,我会认为很快就会尝试学习Android。 Android不是初学者的编程环境。
那就是说,我建议你先做一些教程来熟悉系统。然后,编写自己的应用程序,找到与您尝试做的最相似的教程,复制它,然后开始进行修改。我几乎总是通过复制旧项目来开始新项目。这样,您就知道文件系统布局等可能是正确的。
最后,在Eclipse窗口的底部,您会看到一个标记为“Problems”的选项卡。这对于找出出了什么问题非常有用。在你的情况下,为什么没有找到Ball的解释很可能就在那里。当然,也请检查您的Console和Logcat选项卡。