Thread et Handler dans deux classes différentes
Bonjour,
Je ne maitrise pas encore tout à fait les Thread et processus, mais sur mon appli android, je voudrais faire un décompte de 10..9..8.. jusqu'a 0, et à zéro, j'effectue une opération.
Pour cela, je souhaite créer un Thread qui tourne derrière le Thread UI et qui change un textview toute les secondes (le décompte).
J'ai créé une classe qui étend Thread dans un autre fichier que mon activity, et dans mon activity, j'ai créé un Handler qui reçoit le décompte du Thread pour mettre à jour la vue.
Mon thread :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class ThreadAutoStop extends Thread {
// Bundle key
public String MSG_KEY = "mykey";
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
int cpt = 10;
while(cpt<=0){
Message msg = SlotMachine.mHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString(MSG_KEY,str);
msg.setData(bundle);
msg.sendToTarget();
// sleep a little while (1 second) and increment counter
Thread.sleep(1000);
cpt--;
}
}
} |
Mon handler dans mon activity :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
TextView tv = (TextView) findViewById(R.id.tvTime);
tv.setText(msg.getData().getString(ThreadAutoStop.MSG_KEY));
}
}; |
Le problème est que dans mon ma classe thread, le SlotMachine.mHandler est souligné en rouge en me demandant de changer le Handler en static. Si je change le handler en static, le findViewById(R.id.tvTime) dans le handler est souligné en rouge en me disant que c'est pas possible que le handler soit en static.
Le chien se mort la queue.
Merci pour votre aide =)