У меня есть несколько оверлеев, нарисованных на 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;
}
}