我寫了一個簡單的MotionEvent練習,其中我所做的就是記錄事件的參數。我通過在主要活動中執行OnTouchListener並重寫onTouch()來實現這一點。爲什麼onTouch()在返回false時會生成FATAL EXCEPTION?
對於一個按鈕,我在onTouch()的末尾返回true。那裏沒有問題。
對於另一個按鈕,我在onTouch()的末尾返回false。這是它變得有趣的地方。通過僅僅返回'假',一個致命的例外是拋出一個我不明白的小提示:「回收兩次!」。
這是什麼意思?
更新:每在下面的評論,我從logcat中添加異常的詳細建議:
03-08 10:35:14.275: ERROR/AndroidRuntime(521): FATAL EXCEPTION: main
03-08 10:35:14.275: ERROR/AndroidRuntime(521): java.lang.RuntimeException: MotionEvent{405215b0 action=0 x=66.0 y=78.0 pressure=1.0 size=0.0} recycled twice!
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at android.view.MotionEvent.recycle(MotionEvent.java:659)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at android.view.ViewRoot.handleMessage(ViewRoot.java:1880)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at android.os.Handler.dispatchMessage(Handler.java:99)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at android.os.Looper.loop(Looper.java:123)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at android.app.ActivityThread.main(ActivityThread.java:3647)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at java.lang.reflect.Method.invokeNative(Native Method)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at java.lang.reflect.Method.invoke(Method.java:507)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-08 10:35:14.275: ERROR/AndroidRuntime(521): at dalvik.system.NativeStart.main(Native Method)
您需要向我們展示你的logcat的O/P – Reno 2011-03-08 15:33:17