2012-10-21 79 views
1

我試圖在MapView上實現onTouchEvent來更新地點,但是當我觸摸屏幕時只捕獲ACTION_UP,它會觸發3次。在這種情況下如何執行我的代碼?Android OnTouchEvent觸發3次

@Override 
public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
    int action = event.getAction(); 
    if (action == MotionEvent.ACTION_UP) { 
     Log.e("Touch", Integer.toString(event.getAction())); 
     //All 3 fires has index 1 that concern to ACTION_UP 
     //Below will be AsyncTask call 
    } 
    return false; 
} 

回答

2

從方法簽名,我認爲你的例子是從覆蓋Overlay?如果是這樣,這是documentation狀態:

返回真要是絲錐overlay處理

這是幾乎所有事件(onTouch,onKey等)的標準android行爲。如果事件得到處理(在你的情況下,你開始了你的AsyncTask),你應該返回true,所以Android知道它已被處理。

由於您總是返回false,因此框架不知道它是否已處理並將事件分派到事件處理鏈的更遠處。我不確定它爲什麼只有三次。

所以,如果您成功處理了該事件,請返回true

+0

謝謝,這可以幫助我! – user1376885