2012-11-12 71 views
0

無論我在地圖上單擊哪個元素,MapActivity中的onTap函數始終返回0。這是onTap功能:Android MapActivity onTap索引始終返回0

@Override 
protected boolean onTap(int i) { 

    OverlayItem item = myOverlays.get(i); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(context); 

    dialog.setTitle(item.getTitle()); 
    dialog.show(); 

    return true; 
} 

//myOverlays is a ArrayList<OverlayItem> 

但是,每次函數運行時,索引(i)始終爲0.我已經使用斷點和日誌調試來確認這一點。這讓我感到很困惑,因爲在使用這個函數時我收到了正確的對話框內容。

item.getTitle()將獲取點擊的元素的適當的標題,這意味着該項目,目標是正確的,這意味着myOverlays.get(I)在某種程度上能夠得到不同的對象,即使指數()總是0.這是mindboggling。

有人照顧開導我嗎?你認爲這可能是一個與模擬器上執行「點擊」的事實有關的問題嗎?

在此先感謝。 Krys

+0

發佈更多代碼。它對我的工作很好。 – slybloty

回答

1

這只是一個猜測,因爲您沒有顯示創建疊加和添加項目的代碼。

也許您正在添加多個ItemizedOverlays,並且每個疊加層只有一個項目。喜歡的東西:

for(i=0; i<count; i++){ 
    MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...); 
    OverlayItem oi = new OverlayItem(...); 
    itemizedOverlay.add(oi); 
    mapView.getOverlays().add(itemizedOverlay); 
} 

與上面的代碼中,你將有多重覆蓋,每一個都帶有一個項目位置爲0

對於你應該這樣做效率:

MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...); 
for(i=0; i<count; i++){ 
    OverlayItem oi = new OverlayItem(...); 
    itemizedOverlay.add(oi); 
} 
mapView.getOverlays().add(itemizedOverlay); 

與上面的代碼,你將只有一個覆蓋多個項目。

問候。

+0

你是完全正確的,我看不出爲什麼我以前沒有看到。謝謝一堆! :) – krystah