2010-10-31 50 views
8

J'ai remarqué qu'un toast ne s'affiche pas lorsqu'il est utilisé à l'intérieur d'un bloc catch. Est-ce que quelqu'un sait comment montrer des toasts en attrapant des exceptions? Exemple:Toast ne s'affiche pas lorsqu'il est utilisé dans le bloc catch

try { 
    // try to open a file 
} catch (FileNotFoundException e) { 
    Toast.makeText(this, R.string.txt_file_not_found, Toast.LENGTH_LONG); 
    return; // cancel processing 
} 
+0

apparaît-il si vous dormez pendant 2 secondes avant la déclaration de retour? – JimR

+0

Non .. J'ai essayé et ça n'a rien changé. Rien ne se passe ... – cody

Répondre

14

devrait être comme ceci:

Toast toast = Toast.makeText(this, R.string.txt_file_not_found, Toast.LENGTH_LONG); 
toast.show(); 
+0

Hah, c'était aveuglant. Parfois nous cherchons les complications dans la mer de la simplicité. :) – JimR

+0

Cela fonctionne mais je ne sais pas pourquoi il a été sélectionné comme la meilleure réponse. Pourquoi passez-vous le toast statique à un objet non statique si tout ce que vous allez faire est juste le montrer? Toast.makeText (this, R.string.txt_file_not_found, Toast.LENGTH_LONG) .show(); <- cela fonctionnerait très bien et avec moins d'empreinte mémoire – xil3

+0

Pour les personnes qui ne fonctionnent pas, le toast peut parfois ne pas s'afficher lorsque vous l'utilisez dans un émulateur, lorsque vous testez votre projet sur votre propre téléphone android fonctionne bien. Vérifiez un autre sujet sur "toast" et "émulateur" il y a un problème avec le service. GL – deadfish

11

Oui, je l'ai mis juste derrière la ligne existante:

Toast.makeText(this, R.string.txt_file_not_found, Toast.LENGTH_LONG).show(); 
+0

Je ne sais pas pourquoi cette autre réponse a été acceptée comme la meilleure - c'était clairement la façon la plus logique de le faire. À moins que vous ne fassiez d'autres choses au Toast, il n'est pas nécessaire de passer le statique à un autre objet et de l'utiliser pour montrer ... Quoi qu'il en soit, je vous ai donné +1 pour ce que je pensais être la meilleure réponse question :) – xil3

+0

@ xil3: Je pense que @cody a accepté l'autre réponse car elle a résolu le problème, mais a posté sa propre réponse juste pour informer les autres. –