Je veux afficher Toast Message à l'intérieur de la minuterie et j'ai utilisé le code suivant: et j'obtiens après l'erreur suivante: p> warn / system.err (593): java.lang.runtimeException: impossible de créer un gestionnaire à l'intérieur du fil qui n'a pas appelé Looper.Prepare () P>
warn / system.err (593): à android.os.handler. (gestionnaire.java:121) p>
warn / system.err (593): à android.widget.toast. (toast.java:68) p>
warn / system.err (593): à android.widget.toast.maketext (toast.java:231) p>
blockQuote> merci. p> p>
7 Réponses :
Vous devez appeler uithread pour avoir montré de pain grillé, pas du fil de la minuterie. P>
Appeler le fil de l'interface utilisateur de ce fil de la minuterie. P>
Ce lien vous aidera, P>
http://developer.android.com/resources/articles /timed-ui-updates.html p>
et cette p>
http://developer.android.com/Guide/Appendix /faq/commontasks.html#Hreading p>
Créer un manutention code> et afficher Toast dans ce
Vous avez besoin d'un accès au contexte de l'application pour pouvoir le faire. Essayez de créer votre propre classe qui prend le contexte comme paramètre d'entrée: puis dans votre minuterie: p>
Cela n'a pas fonctionné pour moi! Il a toujours donné la même erreur: java.lang.runtimeException: ne peut pas créer de gestionnaire à l'intérieur du fil qui n'a pas appelé looper.prepare ()
Vous ne pouvez pas faire de mises à jour de l'interface utilisateur à l'intérieur du fil séparé, comme la minuterie. Vous devez utiliser un objet gestionnaire pour la mise à jour de l'interface utilisateur:
J'essaie de faire mon propre toast avec mes propres vues.
J'ai combiné avec succès vos approches. Le code suivant me permet d'afficher des toasts et de modifier / supprimer des vues sans collision, changez simplement les paramètres du constructeur code> MyTimertask code> sur tout ce que vous devez travailler. P>
public void yourFunction(){ Timer timer = new Timer(); MyTimerTask mtc = new MyTimerTask(this.getContext(), tvNotice); timer.schedule(mtc, 1000); } private class MyTimerTask extends TimerTask { private TextView tv; private Context context; public MyTimerTask(Context pContext, TextView pTv) { this.tv = pTv; this.context = pContext; } @Override public void run() { updateUI.sendEmptyMessage(0); } private Handler updateUI = new Handler(){ @Override public void dispatchMessage(Message msg) { super.dispatchMessage(msg); tv.setText("TextView Message"); Toast.makeText(context, "Toast Message", 0).show(); } }; }
Je voulais faire un projet simple qui pourrait afficher un toast dans une minuterie. La minuterie serait lancée à l'aide d'un service. Ensuite, la minuterie commence lorsque le service est démarré et s'arrête lorsque le service est arrêté.
classe 1 p> classe 2 p> classe 3 p>
Le moyen le plus simple (IMO) est le suivant: la touche étant myactivity.Cela.RunonUthread (runnable). P> P>
J'ai rassemblé toutes ces informations dans un code de travail complet, voir ceci Stackoverflow.com/Questtions/11906361/...