J'ai une application qui obtient une entrée utilisateur (nom et numéro), puis numérisation du code QR, puis sur une touche d'un bouton, il envoie les données sur mon serveur et obtenez-en une lecture. Tout fonctionne maintenant comme il se doit. (Je peux voir le message pour le serveur en tant que chaîne lorsque je suis en mode de débogage).
Mais je ne peux pas voir le toast - il n'a pas montré Pourquoi? P>
C'est la classe que j'ai dans la balayacivité.java p> C'est la façon dont il est dit ce que tu me disais de faire :( toujours ne fonctionne pas, et pour une raison quelconque, il "saute" la partie toast) p>
5 Réponses :
Votre toast provient d'un fil d'arrière-plan, il doit être exécuté sur le fil principal / interface utilisateur
Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(),"inside the thread",Toast.LENGTH_LONG).show(); } });
Où dois-je ajouter cela?
n'a pas mis l'ajout à ce nulle part. C'est pourquoi je demande :-)
Et aussi, j'ai besoin du texte sera la chaîne serveur ServerReSly - alors j'ai besoin de CaHnge Somethig d'autre?
Tout le rendu d'interface utilisateur doit être effectué sur le thread principal, vous pouvez utiliser le gestionnaire de visualisation pour faire ce
Où ajouter cela? ,
Ceci sera exécuté sur le thread d'interface utilisateur
runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(),"inside the thread",Toast.LENGTH_SHORT).show(); } });
Où ajouter cela?
Remplacez votre toast avec ce code à l'intérieur de la méthode d'exécution dans le fil
n'a pas fonctionné - je ne vois rien. et dans le mode de débogage, je peux le voir ignorer cela et aller sur
Mettez mon code au-dessus de cette ligne dans votre code Clientockut.close ();
Je l'ai fait, je n'ai pas travaillé - j'ai modifié la question et vous pouvez voir comment cela ressemble maintenant. Peut-être que je l'écris mal?
Vous avez placé du code au bon endroit, vous pouvez également vérifier par le débogage en définissant des points d'arrêt.
quand j'ai débogué et faire une pause ici - "bufferin.close ();" Après cela, il suffit de sauter la partie "runonuthread"
Avez-vous mis un point d'arrêt à l'intérieur de runonuthread toast en toast aussi?
Oui, il entrave le "RunonUthRead (Nouveau annoncable () {" et après cette ligne, il saute à Clientockat.Close ();, aucune exception n'a été prise
toast code> ne peut pas être exécuté autre que le thread d'interface utilisateur, vous pouvez utiliser
runOnUiThread(new Runnable() {
@Override
public void run() {
//see why this is not working - can;t see the toast
Toast.makeText(getApplicationContext(),"inside the thread",Toast.LENGTH_LONG).show();
}
});
Nope, ne fonctionne pas, dans le débogage, je peux le voir sculpter cette partie
espère que cela vous aide. p> p> intentdata.length () code> n'est pas 0 (si votre intenterdata est vide, alors votre Le thread ne sera jamais exécuté, assurez-vous de cela.) p>
Quand il est 0 - Signification Aucun code QR n'a été analysé. et cette partie fonctionne. Et je l'ai fait SHWAT Vous avez suggéré (vous pouvez voir sur le message) - N'a pas fonctionné.
@Afik_android Voir ma réponse mise à jour, en particulier non. # 3 code>. Si 1 et 2 sont corrects, je pense que votre code a attrapé une exception avant d'afficher le message Toast.
Rien, je n'obtiens aucune exception. Il suffit de sauter la partie "runonuthread"
Vous devez afficher Toast sur le fil de l'interface utilisateur.
Êtes-vous capable de connecter les résultats?
@phpdroid - non je n'ai pas de journaux, c'est la première application que j'écris