在Android Back按钮后覆盖onTap不起作用?

时间:2010-07-29 17:44:16

标签: android overlay

我在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 :(得分:0)

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

相关问题