我在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;
}
}
答案 0 :(得分:0)
看起来问题实际上是我在onTap方法上绘制了静态布局,因为它是静态的(InfoBalloon)而没有显示出来。我不知道为什么,它进入了draw方法和所有东西,但是当我把它变成静态时它工作得很好!