Сообщая моему MapActivity, что мой ItemizedOverlay запустил интересующее событие.Дизайн шаблона? - PullRequest
1 голос
/ 28 ноября 2011

поэтому я столкнулся с проблемой, с которой, я уверен, столкнулись многие разработчики до меня. У меня есть класс 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 голосов
/ 28 ноября 2011

Опция # 1: Сделать ItemizedOverlay внутренним классом MapActivity, в этом случае вы просто вызываете метод.

Опция # 2: Передайте MapActivity в ItemizedOverlay (конструктор или установщик), в этом случае вы просто вызываете метод для действия.

Кстати, onTap() будет вызываться в главном потоке приложения, поэтому маловероятно, что вам понадобится synchronized.

...