簡體   English   中英

Android 應用程序在加載過程中在觸摸時崩潰

[英]Android app crashes on loading during loading when touched

我制作了一個在布局內運行的 3d 應用程序(min3D 框架)。 布局包含一些按鈕來控制游戲。 這工作正常。 但是布局看起來比游戲本身更快,當我觸摸應用程序正在加載的區域時,它會崩潰。 如果我等待並且不觸摸該區域,則不會出現任何錯誤。 一切正常。

我怎樣才能解決這個問題?

我現在知道應用程序崩潰了,它應該添加一個尚未加載的對象。 它都在 onTouchEvent 函數中。 但是為什么這在 initScene 完成之前有效?

日志貓:

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

您應該只在加載對象后啟用/添加觸摸偵聽器。 使用那個時間可能會顯示一個加載對話框/等待屏幕。 您的 logcat 解釋了它的 NullPointerException

Scene.java,addChild() 方法中的第 112 行

com.appboss.soyuz.Rocket.onTouchEvent(Rocket.java:250) 這是你的罪魁禍首。 您可以在應用程序完全加載之前捕獲它 - 制作一個標志 isCreated(isLoaded) 或其他。 在將控制權交給用戶之前,您是否有加載屏幕?

為什么不嘗試使用 AsyncTask 在后台加載游戲並彈出“游戲加載時請稍候”對話框,該對話框將在 Asynctask 的 doInBackground() 結束時關閉?

這是我所知道的最好的解決方法,但它假設您不介意小的加載對話框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM