9
votes

Comment afficher Toast Inast Inside Timer?

Je veux afficher Toast Message à l'intérieur de la minuterie et j'ai utilisé le code suivant: xxx

et j'obtiens après l'erreur suivante:

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

warn / system.err (593): à android.os.handler. (gestionnaire.java:121)

warn / system.err (593): à android.widget.toast. (toast.java:68)

warn / system.err (593): à android.widget.toast.maketext (toast.java:231)

merci.


1 commentaires

J'ai rassemblé toutes ces informations dans un code de travail complet, voir ceci Stackoverflow.com/Questtions/11906361/...


7 Réponses :


0
votes

Vous devez appeler uithread pour avoir montré de pain grillé, pas du fil de la minuterie.

Appeler le fil de l'interface utilisateur de ce fil de la minuterie.

Ce lien vous aidera,

http://developer.android.com/resources/articles /timed-ui-updates.html

et cette

http://developer.android.com/Guide/Appendix /faq/commontasks.html#Hreading


0 commentaires

0
votes

Créer un manutention et afficher Toast dans ce xxx


0 commentaires

0
votes

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

puis dans votre minuterie: xxx


1 commentaires

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



7
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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 xxx

classe 2 xxx

classe 3 xxx


0 commentaires

2
votes

Le moyen le plus simple (IMO) est le suivant: xxx

la touche étant myactivity.Cela.RunonUthread (runnable).


0 commentaires