地图上的点击似乎在累积

时间:2011-11-23 13:19:24

标签: android

我写了一个应用程序,显示都柏林市一组交通摄像头的位置。我在地图上显示这些标记。当用户点击标记时,他们将被带到显示来自相关摄像机的最新图片的新活动。它似乎适用于第一次点击。图像显示和回击将再次带您到相机位置的地图。然而,再次点击(相同的标记或不同的标记)会将您带到图像,但然后单击返回会再次显示图像。 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);
    }

以上两种方法都在我使用此签名创建的类中找到:

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);
    }
}

当我查看我的日志文件时,确实看起来好像多次调用了水龙头,但我不明白为什么会这样。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

如果不深入研究,我会想到两件事:

1)您的标记可能重叠,在这种情况下替换

return super.onTap(index);

return true;

会有所作为

2)您可能正在开始第二个活动的新实例,而不是在后台重复使用该实例。

您可以尝试添加:

i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
在你的startActivity(i)之前

;

我认为这些中的一个或两个都会有所帮助,它们会对所发生的事情产生影响,所以请尝试一下。