Overlay onTap не работает после нажатия кнопки «Назад» на Android? - PullRequest
0 голосов
/ 29 июля 2010

У меня есть несколько оверлеев, нарисованных на MapView с помощью ItemizedOverlay, и onTap, который работает при первом запуске моего приложения.Однако, если я нажимаю кнопку «Назад» на Android, а затем снова запускаю приложение, onTap не работает вообще.Другие сенсорные операции работают нормально, например, долгое нажатие на карту и несколько кнопок лица.Также хорошо, если я нажму кнопку «Домой» на телефоне, а затем вернусь в свое приложение, так что это только на кнопке «Назад».Это также будет работать, если я сначала открою другое приложение, такое как приложение «Карты», а затем вернусь в свое приложение, действуя как сброс.

Переопределение метода onBackPressed для перемещения задачи в фоновый режим также не работаетУ кого-нибудь есть идеи, что вызвало бы это?Это происходит как в эмуляторе, так и на реальном устройстве.

Я не знаю, поможет ли это, но вот соответствующий код:

public OverlayManager(MapsTest launcher)
 { 
  m_mapView = (MapView)m_activity.findViewById(R.id.mapview);

  // init the list to the mapview list and clear it out
  m_overlayList = m_mapView.getOverlays();
  m_overlayList.clear();

  // create an overlay list for each overlay type
  for( OverlayTypes o : OverlayTypes.values() )
  {
   m_itemOverlay[o.ordinal()] = new OverlayList(m_context.getResources().getDrawable(OverlayData.getInstance().getDrawableID(o)));
  }

  // init the SMS sender
  m_smsSender = new SMSSender();

  m_mapMenu = new MapMenu(launcher, this);
  m_overlayList.add(m_mapMenu);
  m_mapView.invalidate();
 }


public class OverlayList extends ItemizedOverlay<MapOverlayItem>
{
 private ArrayList<MapOverlayItem> m_items = new ArrayList<MapOverlayItem>();

 private int m_lastSelectedItem = 0;

 public OverlayList(Drawable d)
 {
  super(d);
 }

    @Override
    protected boolean onTap(int index)
    {
     if( !ProgramState.getInstance().recentStateChange() )
     {
         m_lastSelectedItem = index;
         OverlayData.getInstance().setLastSelectedType(m_items.get(index).getMarkerType());

         InfoBalloon.show(m_items.get(index));
     }

     return true;
    }
}

1 Ответ

0 голосов
/ 29 июля 2010

Похоже, что проблема была в том, что на метод onTap был нарисован статический макет, который просто не отображался, потому что он был статическим (InfoBalloon).Я не знаю почему, это входило в метод отрисовки и все такое, но когда я сделал его не статичным, он отлично работал!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...