Question

J'ai utilisé le script pour créer une horloge simple.Mais lorsque j'exécute la fonction d'exécution du programme () fonctionne, mais lorsque j'identifie une valeur à TextView, il affiche malheureusement l'erreur dans l'appareil Android.Aidez-moi s'il vous plaît à résoudre le problème. Voici mon code

TextView tv=(TextView) findViewById(R.id.textView1);
MyTimerTask mytask=new MyTimerTask();
Timer timer = new Timer();
timer.schedule(mytask, 3000, 1000);


class MyTimerTask extends TimerTask {

public void run() {
      tv.setText("Testing"); //(WHEN THIS LINE WILL BE COMMENT 
                                     //IT IS RUNNING   PROPERLY BUT WHEN 
                                     //I SHOW THIS LINE IT SHOW ERROR)
}
}

Était-ce utile?

La solution

Si vous suivez LOGCAT, cela devrait vous dire quelque chose dans le sens de "Vous ne pouvez pas changer le texte d'un fil séparé".Lorsque vous utilisez une minuterie, vous faites juste cela.Vous devez afficher la TextView pour l'ajouter à la file d'attente de messagerie, qui exécutera ensuite le fil-ci sur le thread d'interface utilisateur. Il suffit de remplacer

tv.setText("Testing");

avec

tv.post(new Runnable() {
    public void run() {
            tv.setText("Testing");
    }
});

devrait fonctionner bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top