2012-01-13 9 views
0

レイアウト内で実行される3Dアプリケーション(min3Dフレームワーク)を作成しました。レイアウトには、ゲームを制御するためのボタンがいくつか含まれています。これは正常に動作します。しかし、レイアウトはゲーム自体より速く表示され、アプリがロードされている領域に触れるとクラッシュすることになります。私は待って、領域に触れていない場合、私はエラーを取得します。すべてがうまくいく。 これを修正するにはどうすればよいですか?Androidアプリが読み込み中にクラッシュする

私は今、アプリケーションがまだロードされていないオブジェクトを追加すべきところでクラッシュすることを知っています。 onTouchEvent関数のすべてです。しかし、なぜこれが働いているのですか?initSceneはo.Oを終了しましたか?

logCat:

01-13 21:17:20.476: E/AndroidRuntime(20189): FATAL EXCEPTION: main 
01-13 21:17:20.476: E/AndroidRuntime(20189): java.lang.NullPointerException 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.appboss.min3d.core.Scene.addChild(Scene.java:112) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.appboss.soyuz.Rocket.onTouchEvent(Rocket.java:250) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.app.Activity.dispatchTouchEvent(Activity.java:2231) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1795) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2336) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.view.ViewRoot.handleMessage(ViewRoot.java:1976) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.os.Looper.loop(Looper.java:150) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.app.ActivityThread.main(ActivityThread.java:4277) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at java.lang.reflect.Method.invokeNative(Native Method) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at java.lang.reflect.Method.invoke(Method.java:507) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at dalvik.system.NativeStart.main(Native Method 

+1

あなたのLogCatはエラーとは何か? – Blundell

+0

ここにその説明があります。タッチはすでに動作しているようですが、オブジェクトはまだロードされていません。 mhh:/ – user1119607

+0

コードのスニペットを見るとよいでしょう。 –

答えて

0

あなたが唯一の有効/オブジェクトがロードされた後のタッチリスナーを追加する必要があります。その時には、おそらくロードダイアログ/待機画面が表示されます。あなたのlogcatはcom.appboss.soyuz.Rocket.onTouchEvent(Rocket.java:250)にaddChild()メソッドで

0

をそのNullPointerExceptionが

Scene.java、ライン112を説明し、これはあなたの犯人です。あなたは、アプリケーションが完全に読み込まれる前にそれを捕まえることができます - フラグisCreated(isLoaded)または他のものを作る。ユーザーにコントロールを与える前に読み込み画面がありますか?

0

AsyncTaskを使用して、バックグラウンドでゲームをロードし、AsynctaskのdoInBackground()の最後に "ゲームの読み込み中にお待ちください"ダイアログを表示してみてはいかがですか?

これは私が知っている最良の回避策ですが、小さな読み込みダイアログに気をつけていないことを前提としています。

関連する問題