L'annulation d'une déjà ouvert le pain grillé Android

Je suis en train de commencer à développer des applications Android et j'ai été suivi d'un ce tutoriel sur la façon d'utiliser et d'améliorer l'application Google maps.

J'ai réussi à afficher sur l'écran de la carte, touchez-je obtenir l'adresse d'un emplacement (via le Géocodage Inversé) avec la projection d'une Toast. Mais voici mon problème: lorsque vous cliquez sur un certain nombre de fois consécutives sur la carte, vous obtiendrez tous les toasts les uns après les autres, et chacun d'entre eux va prendre son temps (dans mon cas - Toast.LENGTH_LONG) disparaît. Je veux faire de l'application de fermer automatiquement les anciens pain grillé et de montrer un nouveau toast à la nouvelle adresse cliqué.

Dans d'autres ressources, j'ai trouvé que je devrais utiliser le toast.cancel() méthode à cette fin, mais j'ai l'expérience de la difficulté d'utilisation, j'ai déjà surdéfini la onTouchEvent - comment puis-je détecter il y a un nouveau contact sur la carte pendant que la toast montre?
Ou peut-être vous me suggérer une meilleure façon de cacher la déjà ouvert toast?

J'ai essayé de faire de mon Toast adresse un mondial, mais il ne fonctionnait pas aussi.

Voici mon code pour l'application:

@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {   
    //---when user lifts his finger---
    if (event.getAction() == 1) {                
        GeoPoint p2 = mapView.getProjection().fromPixels((int) event.getX(), (int) event.getY());
        Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
        try {
            List<Address> addresses = geoCoder.getFromLocation(p2.getLatitudeE6() / 1E6,
                    p2.getLongitudeE6() / 1E6, 1);
            String add = " ";
            if (addresses.size() > 0) 
                for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++)
                    add += addresses.get(0).getAddressLine(i) + "\n";
            Toast address;
            address = Toast.makeText(getBaseContext(), add, Toast.LENGTH_LONG);
            address.show();                     
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }
    return false;
}
Comment est grillé.annuler() ne fonctionne pas? Est-il appelée?
Aussi, je vous conseille d'utiliser ACTION_UP == event.getAction() au lieu de event.getAction() == 1. C'est juste un bon style.
double possible de Comment annuler un Toast créé dans une méthode différente sur android?
Merci, @Pompe de velo - c'est ce que je cherchais! Tack

OriginalL'auteur Stefan Doychev | 2011-07-19