2011-11-23 73 views
1

我已經寫了一個應用程序,顯示在都柏林市的一組交通攝像頭的位置。我在地圖上將這些標記顯示爲標記。當用戶點擊標記時,他們會被帶到一個新的活動,顯示相關攝像機的最新圖片。它似乎適用於第一次點擊。圖像顯示並按下後會再次返回到相機位置的地圖。不過,再次點擊(相同標記或不同)會將圖像顯示出來,但點擊後會再次顯示圖像。隨着每次連續拍打,ImageView的實例似乎都在積累。在地圖上的水龍頭似乎在積累

相關的代碼(我認爲)是:

@Override 
    public boolean onTap(int index) { 
     Log.d(TAG, "Tap done on" + index); 
     Intent i = new Intent(TrafficViewActivity.this, CameraViewer.class); 
     i.putExtra("imageSrc", getItem(index).getImageSrc()); 
     startActivity(i); 
     return super.onTap(index); 
    } 

,這(不執行任何自定義):

@Override 
    public boolean onTap(GeoPoint p, MapView mapView) { 
     // mController.animateTo(p); 
     Log.d(TAG, "onTap geopoint:"); 

     return super.onTap(p, mapView); 
    } 

上述2種方法都在一個班,我發現創建此簽名:

class HelloItemizedOverlay extends ItemizedOverlay<MyOverlayItem> 

目標活動只是有一個onResume,它看起來像這樣:

@Override 
protected void onResume() { 
    super.onResume(); 
    Intent i = getIntent(); 
    Bundle ex = i.getExtras(); 
    if (ex != null) { 
     String imageSrc = (String) ex.get("imageSrc"); 

     Log.d(TAG, "imageSrc: " + imageSrc); 
     Util u = new Util(); 

     u.downloadFile(mImage, imageSrc); 
    } 
} 

當我看着我的日誌文件它確實看起來好像水龍頭被稱爲多次,但我不明白這是爲什麼。任何幫助都會很棒。

回答

0

沒有深入研究它,兩件事情映入腦海:

1)您的標記可能會重疊在這種情況下更換

return super.onTap(index); 

return true; 

將有所作爲

2)您可能正在啓動第二個ac的新實例而不是在後臺重複使用。

你可以嘗試添加:

i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

您startActivity(我)之前;

我認爲其中的一個或兩個都會有所幫助,它們會對所發生的事情產生影響,所以請嘗試一下。

+0

感謝@NickT現在完美的工作。看起來我不需要將返回值更改爲true(我已經在我的疑難解答中嘗試過)。超類中的onTap不做任何事情並返回false,所以這不影響我的代碼。雖然重新排列活動堆棧的標誌是現貨。我感覺一些意圖標誌學習即將到來:) –