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 :
Mon handler dans mon activity :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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--; } } }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 chien se mort la queue.
Merci pour votre aide =)
Partager