告诉我的MapActivity,我的ItemizedOverlay已经触发了一个感兴趣的事件。设计模式?

时间:2011-11-27 22:23:21

标签: android google-maps android-maps

所以我在这里面临一个问题,我确信在我之前很多开发人员也面临过这样的问题。我有我的MapActivity类,它创建一个ItemizedOverlay类。 ItemizedOverlay甚至还有一个OnTap。当这个OnTap事件被触发时,我需要找到一种方法来启动MapActivity类中的事件。这真的很简单。

所以在更多细节中我有:

public class Map extends MapActivity {
    private MapItemizedOverlay itemizedOverlay;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        itemizedOverlay = new MapItemizedOverlay();
    }
}
public class MapItemizedOverlay extends ItemizedOverlay<OverlayItem> {
    public MapItemizedOverlay() {

    }
    @Override
    protected synchronized boolean onTap(int index) {
        // I need to find a way to tell the instantiating class this happened!
    }
}

我意识到我可以做一些事情,比如使用静态变量,计时器等等,但它们似乎不是最好的解决方案。

1 个答案:

答案 0 :(得分:0)

选项#1:使ItemizedOverlay成为MapActivity的内部类,在这种情况下,您只需调用方法。

选项#2:将MapActivity传递给ItemizedOverlay(构造函数或setter),在这种情况下,您只需调用活动上的方法。

BTW,onTap()将在主应用程序线程上调用,因此您不太可能需要synchronized