2010-07-29 5 views
0

J'ai plusieurs superpositions dessinées sur un MapView avec ItemizedOverlay, et un onTap qui fonctionne lorsque je commence mon application. Toutefois, si j'appuie sur le bouton Précédent sur Android, redémarrez mon application, l'onTap ne fonctionne plus du tout. D'autres opérations tactiles fonctionnent bien, comme une pression longue sur la carte et plusieurs boutons de visage. C'est aussi bien si j'appuie sur le bouton Accueil sur le téléphone, puis revenir dans mon application, donc c'est seulement sur le bouton Retour. Cela fonctionnera aussi si j'ouvre une autre application comme l'application Maps, puis que je retourne dans mon application, agissant comme une réinitialisation. Le fait de surcharger la méthode onBackPressed pour déplacer la tâche en arrière-plan ne fonctionne pas non plus. Quelqu'un a-t-il des idées sur ce qui pourrait causer cela? Cela se produit dans l'émulateur et sur un périphérique réel.Overlay onTap ne fonctionne pas après le bouton Android Back?

Je ne sais pas si cela va aider, mais voici le code relevent:

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; 
    } 
} 

Répondre

0

Il semble que le problème était en fait j'avais une mise en page statique en cours d'élaboration sur la méthode onTap qui était tout simplement pas montrer parce qu'il était statique (InfoBalloon). Je ne sais pas pourquoi, ça allait dans la méthode draw et tout, mais quand je l'ai fait pas statique cela fonctionne bien!

Questions connexes