Bonjour à tous,
ça va faire 2 jours que je cherche mais sans réel succès. Mon but est d'essayer de mettre à jour une TextView à partir d'une autre classe.
Dans mon projet, j'ai 2 fichiers : le fichier principal contenant la fonction onCreate() et le second fichier est un fichier Log.
Toutes les fonctions de mon fichier Log sont "static". A partir de la fonction onCreate, j'appelle par exemple "Log.Info("Bonsoir !");"
Ma classe Log va écrire dans un fichier "[INFO]: Bonsoir !". Jusque là, pas de problème, mais j'aimerai que lorsque le programme écrit dans le fichier .log suite aux appels de Log.*, il y ait une mise à jour sur l'interface graphique du téléphone, plus particulièrement dans la TextView.
Pour que l'on s'y retrouve mieux, voici la partie du code onCreate (la seule fonction de mon 1er fichier) :
Voici ma fonction Info() du 2ème fichier :
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 import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.widget.LinearLayout; import android.widget.TextView; import java.io.*; public class TestActivity extends Activity { LinearLayout layout = null; static TextView result = null; @Override public void onCreate(Bundle savedInstanceState) { File _fileName = new File(Environment.getExternalStorageDirectory(), "File.log"); Log.Init(_fileName.toString()); Log.Info("Bonsoir !"); super.onCreate(savedInstanceState); setContentView(R.layout.main); result = (TextView)this.findViewById(R.id.log); result.setText("Window Log:\n"); }
Suivi de la fonction Write() toujours issue du 2ème fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public static void Info(String Message) { Write(Message, Levels.Info); }
Voilà, j'ai déjà cherché un peu partout, beaucoup en parle mais je n'ai pas vraiment trouvé de solution surtout que j'utilise des fonctions "static", je ne sais pas si cela pose vraiment problème.
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 private static void Write(String Message, Levels lvl) { switch(lvl) { case Info: { /*C'est ici qu'il faudrait que je puisse envoyer le message pour mettre à jour la TextView*/ try { fs.write("[INFO]: " + Message + "\n"); fs.flush(); } catch (IOException e) { } } break; } }
Je vous remercie d'avance pour votre aide,
Bonsoir !
Partager