488 votes

Comment afficher Toast dans Android ?

J'ai un curseur qui peut être tiré vers le haut et qui montre une carte. Je peux déplacer le curseur vers le haut et le bas pour cacher ou afficher la carte. Lorsque la carte est affichée, je peux gérer les événements tactiles sur cette carte. Chaque fois que je touche, un AsyncTask est lancé, il télécharge des données et fait un Toast qui affiche les données. Bien que je lance la tâche sur un événement tactile, aucun toast ne s'affiche, pas avant que je ferme le curseur. Lorsque le curseur est fermé et que la carte n'est plus affichée, l'icône de la tâche s'affiche. Toast apparaît.

Des idées ?

Bien commencer la tâche

EDIT :

public boolean onTouchEvent(MotionEvent event, MapView mapView){ 
    if (event.getAction() == 1) {
        new TestTask(this).execute();
        return true;            
    }else{
        return false;
    }
 }

et en onPostExecute porter un toast

Toast.makeText(app.getBaseContext(),(String)data.result, 
                Toast.LENGTH_SHORT).show();

En nouveau TestTask(this) il s'agit d'une référence à MapOverlay et non à MapActivity C'était donc le problème.

2 votes

Ce message a été répondu il y a longtemps, mais je pense que mon commentaire peut encore aider quelqu'un. Il existe une bibliothèque bien formée liée à Toast vérifiez-le : stackoverflow.com/a/18280318/1891118

2 votes

Presque tout sur les toasts... simple tutoriel.... cliquez ici

895voto

Elenasys Points 23268

Afin d'afficher Toast dans votre application, essayez ceci :

Toast.makeText(getActivity(), (String)data.result, 
   Toast.LENGTH_LONG).show();

Un autre exemple :

Toast.makeText(getActivity(), "This is my Toast message!",
   Toast.LENGTH_LONG).show();

Nous pouvons définir deux constantes pour la durée :

int LENGTH_LONG Afficher la notification d'affichage ou de texte pendant une longue longue période.

int LENGTH_SHORT Afficher la notification d'affichage ou de texte pendant une courte période période de temps.

Personnalisez votre toast

LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();

3 votes

@Elen, vous avez besoin du contexte d'activité pour faire des TOASTS, pas du contexte d'application.

1 votes

En fait, exiger un contexte d'activité n'est pas correct. CEPENDANT, faire fonctionner les toasts en dehors des activités (par exemple dans un service système) nécessite un accès à la boucle principale. Je poste ma solution.

7 votes

Si vous le placez dans une méthode onClick, remplacer getActivity() par getBaseContext() a fonctionné pour moi.

86voto

Cristiana214 Points 661

Extension de l'activité en utilisant baseadapter utilisé ce

Toast.makeText(getActivity(), 
    "Your Message", Toast.LENGTH_LONG).show();

ou si vous utilisez l'activité ou mainactivity

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();

1 votes

Il n'existe pas d'adaptateur de base ou d'activité principale, les toasts ne s'affichent qu'en passant des paramètres tels que le contexte de l'application, le message et la durée (longue ou courte).

48voto

user1153551 Points 3562

Syntaxe

Toast.makeText(context, text, duration);

Valeur du paramètre

contexte

getApplicationContext() - Renvoie le contexte de toutes les activités en cours dans l'application.

getBaseContext() - Si vous voulez accéder à un contexte à partir d'un autre contexte dans l'application, vous pouvez y accéder.

getContext() - Renvoie la vue contextuelle uniquement de l'activité en cours.

texte

text - Retournez "STRING", si ce n'est pas une chaîne, vous pouvez utiliser le type cast.

 (string)num   // type caste

durée

Toast.LENGTH_SHORT - Délai de grillage de 2000 ms prédéfini

Toast.LENGTH_LONG - Délai de grillage de 3500 ms prédéfini

milisecond - Délai du toast défini par l'utilisateur en milisecondes (ex. 4000)


Exemple.1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();

Exemple.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();

0 votes

Délai de toast de 5000 millisecondes défini par l'utilisateur.

0 votes

Bonne explication, mais il faut un contexte d'activité pour faire des toasts, pas un contexte d'application.

0 votes

Bon, bon, un casting tel que (string)num n'a pas encore été introduit dans Java. Essayez Integer.toString() ou similaire.

30voto

Dinesh Points 45

Toast dans Android

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();

ou

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();

( LENGTH_SHORT et LENGTH_LONG agissent comme des drapeaux booléens - ce qui signifie que vous ne pouvez pas envoyer le timer en milisecondes, mais vous devez utiliser l'une ou l'autre de ces 2 options )

6 votes

En lisant la documentation, vous ne pourrez choisir que Toast.LENGTH_SHORT ou Toast.LENGTH_LONG pour la durée du message.

21voto

Mahesh Points 1655

Vous pouvez personnaliser votre tost :

LayoutInflater mInflater=LayoutInflater.from(this);

View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();

Ou la voie générale :

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();

1 votes

Bien - voici quelques exemples de projets réels sur GitHub -. codota.com/Android/methods/Android.widget.Toast/show

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X