-1
votes

Toast Android ne montre pas

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?

C'est la classe que j'ai dans la balayacivité.java xxx

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) xxx


3 commentaires

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


5 Réponses :


2
votes

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


3 commentaires

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?



3
votes

Tout le rendu d'interface utilisateur doit être effectué sur le thread principal, vous pouvez utiliser le gestionnaire de visualisation pour faire ce xxx


1 commentaires

Où ajouter cela? ,



4
votes

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


9 commentaires

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



1
votes

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



               


1 commentaires

Nope, ne fonctionne pas, dans le débogage, je peux le voir sculpter cette partie



1
votes

1) Vous devez écrire des toast dans un fil d'interface utilisateur. comme coup xxx

2) Vous devez vous assurer que intentdata.length () n'est pas 0 (si votre intenterdata est vide, alors votre Le thread ne sera jamais exécuté, assurez-vous de cela.) xxx

3) et assurez-vous également que votre code n'a pas donné d'exception avant d'afficher votre message Toast avant de montrer votre message Toast [Gérer votre exception dans un bloc de capture comme suit] xxx

espère que cela vous aide.


3 commentaires

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 . 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"