Comment afficher Toast dans Android?

446

J'ai un curseur qui peut être tiré vers le haut, puis il montre une carte. Je peux déplacer le curseur de haut en bas pour masquer ou afficher la carte. Lorsque la carte est sur le devant, je peux gérer les événements tactiles sur cette carte. Chaque fois que je touche, un AsyncTaskest allumé, il télécharge des données et en fait un Toastqui affiche les données. Bien que je démarre la tâche lors d'un événement tactile, aucun toast n'est affiché, jusqu'à ce que je ferme le curseur. Lorsque le curseur est fermé et que la carte n'est plus affichée, Toastapparaît.

Des idées?

Bien commencer la tâche

ÉDITER:

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

et onPostExecutefaire un toast

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

Dans new TestTask(this), c'est une référence à MapOverlayet non à MapActivity, donc c'était le problème.

Upvote
la source
1
il y a longtemps que ce message a reçu une réponse, mais je pense que mon commentaire peut encore aider quelqu'un. il existe une bibliothèque bien formée liée à Toast, vérifiez-la: stackoverflow.com/a/18280318/1891118
Oleksii K.
2
Presque tout sur Toast ... tutoriel simple .... cliquez ici
Thomas Daniel

Réponses:

849

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();

On peut définir deux constantes de durée:

int LENGTH_LONG Affiche la vue ou la notification de texte pendant une longue période.

int LENGTH_SHORT Affiche la vue ou la notification de texte pendant une courte période.

Personnaliser 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();
Jorgesys
la source
3
@Elen, vous avez besoin du contexte d'activité pour créer TOASTS, pas du contexte d'application.
Yousha Aleayoub
1
En fait, exiger un contexte d'activité n'est pas correct. TOUTEFOIS, pour que les toasts fonctionnent en dehors des activités (par exemple dans un service système), il faut accéder à la boucle principale. Publier ma solution.
ChrisCM
7
Si vous le placez dans une méthode onClick, remplacer getActivity () par getBaseContext () a fonctionné pour moi.
Edward
@ PhilipBelgrave-Herbert Malheureusement, votre lien n'est plus bon.
Ellen Spertus
4
Toast.makeText (MainActivity.this, message, Toast.LENGTH_LONG) .show ();
Shahab Einabadi
83

Étendre l'activité en utilisant baseadapterutilisé ceci

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();
Cristiana Chavez
la source
1
il n'y a rien de tel que l'adaptateur de base ou l'activité principale, les toasts ne s'affichent qu'en passant le contexte de l'application de paramètre, le message, la durée longue / courte
Mahesh
47

Syntaxe

Toast.makeText(context, text, duration);

Valeur du paramètre

le contexte

getApplicationContext() - Renvoie le contexte de toutes les activités exécutées dans l'application.

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

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

texte

text - Renvoyer "STRING", sinon chaîne, vous pouvez utiliser le type cast.

 (string)num   // type caste

durée

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

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

milisecond - Toast retarde les millisecondes définies par l'utilisateur (par exemple 4000)


Exemple 1

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

Exemple.2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();
Jay Patel
la source
Délai de toast de 5000 millisecondes défini par l'utilisateur.
Jay Patel
Bien expliquer, mais vous avez besoin du contexte d'activité pour faire des TOASTS, pas du contexte d'application.
Yousha Aleayoub
Eh bien, eh bien, un cast tel que (string) num n'a pas encore été introduit en Java. Essayez Integer.toString () ou similaire.
Mostowski Collapse
2
le réglage de la durée n'est pas possible pour un toast, uniquement les heures prédéfinies, LENGTH_SHORT & LENGTH_LONG .
Jorgesys
23

Faire griller 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 indicateurs booléens - ce qui signifie que vous ne pouvez pas envoyer de toast timer en millisecondes, mais vous devez utiliser l'une de ces 2 options)

Dinesh
la source
6
Lisez la documentation, vous ne choisirez Toast.LENGTH_SHORT ou Toast.LENGTH_LONG que pour la durée du message.
Jorgesys
20

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 manière générale:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();
Mahesh
la source
1
À droite - voici quelques exemples de projets réels sur GitHub - codota.com/android/methods/android.widget.Toast/show
drorw
15

J'ai essayé plusieurs toasts et pour ceux à qui leur toast leur donne une erreur, essayez

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();

la source
14

Il y a deux façons de procéder.

Soit utiliser le message Toast intégré

//Toast shown for  short period of time 
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();

//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();

ou créez-en un personnalisé en fournissant un fichier de mise en page personnalisé

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();
Aniket Thakur
la source
1
Bien expliquer, mais vous avez besoin du contexte d'activité pour faire des TOASTS, pas du contexte d'application.
Yousha Aleayoub
Les documents Android mentionnent spécifiquement le contexte de l'application: "Cette méthode prend trois paramètres: le contexte de l'application, le message texte et la durée du toast. Elle renvoie un objet Toast correctement initialisé."
lgunsch
9

J'ai parcouru les réponses ici et j'ai été attiré par le fait qu'il semble y avoir quelqu'un qui fouille, croyant qu'un contexte d'activité est requis. Ce n'est pas le cas. Cependant, il est obligatoire qu'un Toast soit publié à partir de l'événement principal ou du thread d'interface utilisateur. Donc, faire fonctionner cela en dehors d'un contexte d'activité est un peu délicat. Voici un exemple qui fonctionnerait à l'intérieur d'un service système, ou de toute classe potentielle qui hérite finalement de Context.

public class MyService extends AccessibilityService {

    public void postToastMessage(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());

        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
}

Notez que nous n'avons pas besoin d'accéder à une instance de Activitypour que cela fonctionne. Veuillez cesser de suggérer que c'est le cas! Si Activitynécessaire, la signature de la méthode n'appellerait pas de Context.

ChrisCM
la source
8
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

au lieu d'utiliser "app.getBaseContext ()".

Vous pouvez essayer d'utiliser " getApplicationContext () " ou " getContext () ".

Si votre code est en activité, vous devez utiliser "ceci" de "Activty.this".
Si votre code est fragmenté, vous devriez opter pour "getActivity ()"

Yogesh Nandha
la source
7

Si c'est un fragment,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();
hacher
la source
6

Pour afficher Toast, utilisez le code suivant:

Toast toast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
Anurag
la source
5
 Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
 toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
 toast.setDuration(10000);//you can even use milliseconds to display toast
 toast.show();**//showing the toast is important**
Gowtham Chandrasekaran
la source
5

Manière simple

toast("Your Message")

OU

toast(R.string.some_message)

Ajoutez simplement deux méthodes dans votre BaseActivity. Ou créez-en un nouveau BaseActivitysi vous ne l'utilisez pas déjà.

public class BaseActivity extends AppCompatActivity {
    public void toast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    public void toast(@StringRes int msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }
}

et étendre toutes vos activités par BaseActivity.

public class MainActivity extends BaseActivity
Khemraj
la source
3

Manière la plus simple! (Pour afficher dans votre activité principale, remplacez le premier argument pour une autre activité)

Button.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
    }
}
devDeejay
la source
2

Cela a fonctionné pour moi:

Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();

la source
2

entrez la description de l'image ici

Doit lire: Exemple de toast Android

Syntaxe

Toast.makeText(context, text, duration);

Vous pouvez utiliser getApplicationContext () ou getActivity () ou MainActivity.this (si le nom de l'activité est MainActivity)

Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();

ou

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();
Athira Reddy
la source
2

La façon de commencer

Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
Dary
la source
1

Afficher le toast du service

public class ServiceA extends Service {
    //....
    public void showToast(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
    //....
}

Vous pouvez également mettre la showToastméthode dans votre classe Application et afficher des toasts de n'importe où.

Khemraj
la source
1

Si vous souhaitez rédiger un simple toast dans votre activité: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1.Affichage de TextView dans Toast: ---

TextView tv = new TextView(this); tv.setText("Hello!"); tv.setTextSize(30); tv.setTextColor(Color.RED); tv.setBackgroundColor(Color.YELLOW);

2.Afficher l'image sous forme de pain grillé: -

ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.blonde); Toast t = new Toast(this); t.setView(iv); t.setDuration(Toast.LENGTH_LONG); t.show();

3. affichage de la présentation sous forme de pain grillé: -

LayoutInflater li = getLayoutInflater(); View view = li.inflate(R.layout.my_toast_layout,null,false); Toast t = new Toast(this); t.setView(view); t.setDuration(Toast.LENGTH_LONG); t.show();

** Si vous souhaitez écrire le toast dans votre Async, alors: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

Deepya
la source
1

En voici un autre:

refreshBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
            }
        });

Toastest:

Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();

& strings.xml:

<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>

Jadeye
la source
1

Fragments intérieurs (onCreateView)

Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();

Classes internes (onCreate)

Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();

MoniFern
la source