我工作的一個谷歌地圖應用程序,其中用戶可觸摸地圖和標記在地圖上起點和終點。然後連接兩個點的路徑在地圖上繪製。 爲了處理觸摸事件,我在MapOverlay類中實現了onTouchEvent方法。 我觀察到一些奇怪的行爲與地圖。當用戶獲得連接兩個點的路徑時,地圖凍結,即我無法平移或縮放地圖。 我發現,如果返回值是真的onTouchEvent這是MapOverlay方法內的內部在上述地圖凍結所述情節。如果我返回false,那麼地圖不會凍結。但是,如果我想再次在地圖上標記新的點,應用程序崩潰... onTouchEvent的返回值如何與此行爲相關?爲什麼onTouchEvent的返回值會使應用程序崩潰或凍結mapView?
0
A
回答
1
如果返回true,處理程序告訴系統,它處理的的onTouchEvent,系統不會調用另一個onTouchListener。如果你返回false,你告訴系統,你沒有處理觸摸事件,它會調用底層視圖的onTouchListener。你的地圖不會凍結,但它沒有得到任何觸摸事件,因爲你的處理器處理它們。
1
即使作品onTouchEvent()
的方式是如果你返回true,這意味着觸摸事件被處理,Android不會繼續沿視圖層次結構處理觸摸事件。如果你返回false,它將繼續。
在這種情況下,當你總是返回true,你總是說,觸摸事件已處理。因此,你做的任何手勢都不會被處理,因爲你說它已經被處理了。因此,它看起來像地圖凍結。相反,把這樣一個條件:
@Override
public boolean onTouchEvent(MotionEvent event){
boolean wasHandled = false;
if(/* condition where your touch event was handled */)
wasHandled = true;
else
wasHandled = super.onTouchEvent(event);
return wasHandled;
}
,當你返回false崩潰或者是在你的程序有問題,或者進入一個循環,因爲該事件的處理從來沒有的原因。
+0
我根據條件返回了true或false,而不是真正的返回,並且我的問題得到解決。謝謝。 –
相關問題
- 1. MapView應用程序崩潰
- 2. Genymotion應用程序崩潰/凍結
- 3. 爲什麼我的程序在返回後會凍結?
- 4. 掛接java應用程序崩潰/凍結應用程序
- 5. MapView:推出應用程序崩潰
- 6. 爲什麼Android會「復活」崩潰的應用程序?
- 7. 爲什麼NSMutableArray Count會崩潰我的應用程序?
- 8. 爲什麼以下行會崩潰我的Android應用程序?
- 9. SenTestingKit爲什麼會導致我的應用程序崩潰?
- 10. 偶爾我的應用程序會崩潰,爲什麼?
- 11. 爲什麼程序崩潰?
- 12. 爲什麼我的程序在返回語句時崩潰?
- 13. 爲什麼我的程序在給定負值時會崩潰?
- 14. dismissModalViewControllerAnimated:凍結的應用程序,而不是崩潰
- 15. 爲什麼我的應用程序崩潰使用__autoreleasing + __strong?
- 16. 什麼是UICalloutBarButton,它爲什麼會讓我的應用程序崩潰?
- 17. 爲什麼在我關閉或回顧活動時應用程序崩潰?
- 18. 爲什麼使用mapview發生奇怪的崩潰?
- 19. 應用程序凍結,然後在啓動畫面上崩潰
- 20. 爲什麼編寫自己的MiddleWare會使我的Django應用程序崩潰?
- 21. 爲什麼onPress的按鈕中的警報會使expo應用程序崩潰?
- 22. execv爲什麼會崩潰?
- 23. 爲什麼nspredicate會崩潰?
- 24. PyObject_Print爲什麼會崩潰?
- 25. enable_shared_from_this。爲什麼會崩潰?
- 26. 爲什麼RSA_size會崩潰?
- 27. UI爲什麼會凍結?
- 28. SBJsonParser:如果我不保留返回值,應用程序崩潰
- 29. 爲什麼不存在的IBOutlet不會使應用程序崩潰?
- 30. 爲什麼異步Parallel.ForEach中的異常會使應用程序崩潰?
所以,現在我明白了地圖沒有註冊任何觸摸事件,因此沒有響應。我該如何解決這個問題?我希望地圖能夠在地圖上繪製路徑之後註冊觸摸事件。 –
爲什麼不在你的EventListener中返回false,並在返回之前執行你想要做的功能? –
我發現默認情況下我在onTouchEvent的最後返回true。所以處理程序假設事件正在處理,無論如何。問題現在已解決。謝謝。 –