Android, Gestionnaire de messagerie
J'ai quelques code très simple à faire avec des gestionnaires:
Handler seconds=new Handler() {
@Override
public void handleMessage(Message msg) {
bar.incrementProgressBy(5);
tView1.setText("r:"+msg);
}
};
Et mon thread:
Thread seconds_thread=new Thread(new Runnable() {
public void run() {
try {
for (int i=0;i<20 && isRunning.get();i++) {
Thread.sleep(1000);
Message m = new Message();
Bundle b = new Bundle();
b.putInt("what", 5); //for example
m.setData(b);
seconds.sendMessage(m);
}
}
catch (Throwable t) {
//just end the background thread
}
}
});
Comme vous pouvez le voir ci-dessus, je suis en train de changer la valeur de "what
" dans le message, donc je peux faire des choses différentes selon le message, mais selon "tView1.setText("r:"+msg)
" la valeur de "what
" n'est pas en changeant à 5:
c'est seulement en montrant "what=0
"
Comment puis-je modifier les valeurs de Message afin que je puisse faire des choses différentes selon le message?
Merci!
Vous devez vous connecter pour publier un commentaire.
Vous devez obtenir les données à partir du Message (en tant que Bundle alors que int) que vous avez envoyé dans le gestionnaire que vous faites:
Bundle
pour votre deuxième question pour vos propres paramètres developer.android.com/reference/android/os/Bundle.html C'est simple concept à obtenir. (La paire de clés et de valeurs)Vous avez besoin d'extraire le message de la même manière que vous l'avez obtenu:
Désolé de ne pas préciser que, dans la réponse précédente...
P. S. j'ai ignoré la vérification de la valeur null pour des raisons de simplicité, mais vous devriez vérifier si
data
est nul...