J'ai une fonction appelée lorsqu'un bouton est enfoncé et il a un fil censé envoyer et effacer un texte TextView, mais cela ne se produit pas. Aussi pas de stacktrace.
public void sendMessage(View view) {
if (input_text.getText().length() > 0) {
new Thread(new Runnable() {
@Override
public void run() {
TextMessage message = new TextMessage(input_text.getText().toString(), 0, MainHandler.getUserID(), MainHandler.getUsername());
MainHandler.sendObject(message);
input_text.setText("");
}
});
}
}
4 Réponses :
Vous ne démarrez pas votre fil:
new Thread(new Runnable() {
@Override
public void run() {
TextMessage message = new TextMessage(input_text.getText().toString(), 0, MainHandler.getUserID(), MainHandler.getUsername());
MainHandler.sendObject(message);
input_text.setText("");
}
}).start();
Vous devez appeler explicitement start () code> (pas exécution () code>) sur le thread code> créé p>. p>.
Il est faux de modifier l'interface utilisateur avec le nouveau fil. L'interface utilisateur doit être modifiée par le fil de l'interface utilisateur!
Veuillez utiliser Invoke plus tard pour mettre à jour votre UI!
https://www.javamex.com/tadorials/threads/invokelater.shtmlled p> et bien sûr, vous devez démarrer le fil. p> p>
Merci!, Mettra l'entrée_text à l'extérieur du fil à l'extérieur.
Notez que ce lien que vous avez fourni est à propos de Swing. Cette question concerne Android.
Vous avez raison =) désolé, je n'ai pas vu la balise.
Vous devez appeler https://docs.oracle.com /javase/8/docs/api/java/lang/Trhead.html p> thread.start () code>. Sinon, l'objet de thread est assis là en attente de commencer. P>