-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.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のデッドコード0x002d-0032 / bungee / bounce/Cracka;。()V 10-15 21:02:45.496:E / dalvikvm(7847):メソッドcom.jordan.bungee.bounce.Cracka.start10-15から参照されるクラス'com.game.src.Ball'が見つかりませんでした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.jordan.bungee.bounce.Cracka.paintから参照されたメソッドcom.game.src.Ball.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; .paint(Ljava / awt / Graphics;)Vのデッドコード0x0005-001f

10-15 21:02:45.507:D / AndroidRuntime(7847):VMをシャットダウンしています

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):com.jordan.bungee.bounce.Cracka。(Cracka.java:22)

10-15 21:02:45.527:E / AndroidRuntime(7847):java.lang.Class.newInstanceImpl(ネイティブメソッド)

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(ネイティブメソッド)で

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):dalvik.system.NativeStart.main(ネイティブメソッド)

4

1 に答える 1

0

すでにローカル変数bをクラスメンバーとして定義しているので、start()メソッドでローカル変数bを定義している理由がわかりません。start()で作成したものは、start()が戻るとすぐに失われます。

また、作成したメンバーオブジェクトは、onCreate()が呼び出されるずっと前にインスタンス化されます。Ball()を正常に作成するために、アクティビティが作成されるときに使用できる十分なコンテキストはありますか?Ball()のソースコードを見ないとわかりません。

logcatの出力は、Ballのクラスが見つからなかったことを示しています。書きましたか?Eclipseが見つけることができる正しいディレクトリにそれを置きましたか?

この質問とフォローアップは、Androidプログラミングに非常に慣れていないこと、そしておそらくJavaに慣れていないことを示しているようです。もしあなたがJavaに不慣れであるなら、私はAndroidをすぐに学ぼうとすることについて良いと思うでしょう。Androidは初心者向けのプログラミング環境ではありません。

そうは言っても、システムに慣れるためにいくつかのチュートリアルを実行することから始めることをお勧めします。次に、独自のアプリケーションを作成するには、実行しようとしていることに最も近いチュートリアルを見つけてコピーし、変更を加えます。私はほとんどの場合、古いプロジェクトをコピーして新しいプロジェクトを開始します。このようにして、ファイルシステムのレイアウトなどがおそらくそれを開始するのに正しいことがわかります。

最後に、Eclipseウィンドウの下部に、「Problems」というラベルの付いたタブが表示されます。これは、何が問題になっているのかを見つけるのに非常に役立ちます。あなたの場合、ボールが見つからなかった理由の説明がそこにある可能性があります。もちろん、[コンソール]タブと[Logcat]タブも確認してください。

于 2012-10-19T00:22:12.320 に答える