IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème exécution setText();


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut Problème exécution setText();
    Bonjour à tous,

    Ça fais quelque jours que j'ai commencé à développer sous android, et aujourd'hui j'ai un problème que je n'arrive pas à résoudre.

    Voici mon problème: j'utilise ma classe graphique "Chargement.java" qui permet d'afficher graphiquement (Activity) l'état d'avancement du thread qui tourne en fond de tache.
    Dans mon Thread en fond de tache je simule le travail par des sleep(); et j'envoi des messages à l'aide du Handler.

    Mais lorsque je traite le message dans la fonction "traitement_message(msg)" dans la classe "Chargement.java" je tente de faire une setText(); sur mes textView mais j'ai une erreur Fatal et l'application se ferme

    Mon interface xml chargement.xml:

    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
    <?xml version="1.0" encoding="utf-8"?>
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/chargement"
        android:columnCount="1" >
     
        <TextView
            android:id="@+id/id_view_chargement"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_gravity="left|center_vertical"
            android:layout_row="1"
            android:gravity="center"
            android:text="initialisation ..." />
     
        <ProgressBar
            android:id="@+id/id_progress_chargement"
            android:layout_column="0"
            android:layout_gravity="center"
            android:layout_row="1" />
     
    </GridLayout>
    voici ma classe "Chargement.java":

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    package com.example.barryplayer;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.widget.ProgressBar;
    import android.widget.TextView;
     
    public class Chargement  extends Activity {	
     
    	//===========================================
    	// Variables
    	//===========================================
    	TextView text_chargement;
    	ProgressBar progress_chargement ;
    	// Code retour thread
    	int CALCUL_IP_BROAD = 10;
    	int RECHERCHE_RASPBERRY = 11;
    	int CONNEXION_RASPBERRY = 12;
    	int CONNECTE_RASPBERRY = 13;
     
    	//===========================================
    	// Handler
    	//===========================================
    	final Handler handler = new Handler(){
    		@Override
    		public void handleMessage(Message msg){
    			// Traitement du message provenant du ThreadTravail
    			traitement_message(msg);
    		}
    	};
     
    	//===========================================
    	// instenciation Classes
    	//===========================================
    	ThreadTravail threadT = new ThreadTravail(handler);
     
     
    	//===========================================
    	// onCreate
    	//===========================================
    	@Override
    	protected void onCreate(Bundle mBundle) {
    		// TODO Auto-generated method stub
    		super.onCreate(mBundle);
     
    		// Initialisation de l'interface
    		text_chargement = (TextView)findViewById(R.id.id_view_chargement);
    		progress_chargement = (ProgressBar)findViewById(R.id.id_progress_chargement);
     
    		// Affichage de l'interface
    		setContentView(R.layout.chargement);
    	}
     
    	//===========================================
    	// onStart
    	//===========================================
    	@Override
    	protected void onStart() {
    		// TODO Auto-generated method stub
    		super.onStart();
    		// Execution du Thread de travail
    		Thread thread1 = new Thread(threadT);
    		thread1.start();
    	}
     
    	//===========================================
    	// traitement_message(msg)
    	//===========================================
    	public void traitement_message(Message msg){
    		if (msg.what == CALCUL_IP_BROAD){
    			text_chargement.setText("Calcul broadcast ...");
    		}
    		else if (msg.what == RECHERCHE_RASPBERRY){
    			text_chargement.setText("Recherche raspberry ...");
    		}
    		else if (msg.what == CONNEXION_RASPBERRY){
    			text_chargement.setText("Connexion raspberry ...");
    		}
    		else if (msg.what == RECHERCHE_RASPBERRY){
    			text_chargement.setText("connecté !");
    			progress_chargement.setVisibility(progress_chargement.INVISIBLE);
    		}
    	}
     
    }
    et ma classe de ThreadTravail.java:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package com.example.barryplayer;
     
    import android.os.Handler;
    import android.util.Log;
     
    public class ThreadTravail implements Runnable {
     
    	//===========================================
    	// Variables
    	//===========================================
    	Handler mHandler;
     
    	public ThreadTravail (Handler handler) {
    		mHandler = handler;
    	}
     
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		Log.d("smp", "Thread: Début du Thread ...");
    		try {
    			Log.d("smp", "Thread: Simulation calcul ip Broadcast ...");
    			Thread.sleep(2000,0);
    			mHandler.sendEmptyMessage(10);
    			Log.d("smp", "Thread: Simulation recherche rasberry ...");
    			Thread.sleep(2000,0);
    			mHandler.sendEmptyMessage(11);
    			Log.d("smp", "Thread: Simulation connexion ...");
    			Thread.sleep(2000,0);
    			mHandler.sendEmptyMessage(12);
    			Log.d("smp", "Thread: Simulation connexion réussi !");
    			Thread.sleep(2000,0);
    			mHandler.sendEmptyMessage(13);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
     
     
    }
    Voilà j'espère que je me suis bien exprimé

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Il manque juste le logcat associé à la fermeture de l'application....

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    Oui désolé voici le logcat à la fermeture de l'application:

    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
    05-09 16:29:15.917: D/dalvikvm(5690): GC_FOR_ALLOC freed 82K, 3% free 8920K/9155K, paused 17ms
    05-09 16:29:15.917: I/dalvikvm-heap(5690): Grow heap (frag case) to 10.000MB for 1280016-byte allocation
    05-09 16:29:15.997: D/dalvikvm(5690): GC_CONCURRENT freed 1K, 3% free 10169K/10439K, paused 6ms+3ms
    05-09 16:29:16.007: D/smp(5690): Thread: Début du Thread ...
    05-09 16:29:16.007: D/smp(5690): Thread: Simulation calcul ip Broadcast ...
    05-09 16:29:16.017: D/TextLayoutCache(5690): Using debug level: 0 - Debug Enabled: 0
    05-09 16:29:16.067: D/libEGL(5690): loaded /system/lib/egl/libGLES_android.so
    05-09 16:29:16.067: D/libEGL(5690): loaded /system/lib/egl/libEGL_adreno200.so
    05-09 16:29:16.067: D/libEGL(5690): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
    05-09 16:29:16.067: D/libEGL(5690): loaded /system/lib/egl/libGLESv2_adreno200.so
    05-09 16:29:16.097: D/OpenGLRenderer(5690): Enabling debug mode 0
    05-09 16:29:18.007: D/smp(5690): Thread: Simulation recherche rasberry ...
    05-09 16:29:18.017: D/AndroidRuntime(5690): Shutting down VM
    05-09 16:29:18.017: W/dalvikvm(5690): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
    05-09 16:29:18.017: E/AndroidRuntime(5690): FATAL EXCEPTION: main
    05-09 16:29:18.017: E/AndroidRuntime(5690): java.lang.NullPointerException
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at com.example.barryplayer.Chargement.traitement_message(Chargement.java:74)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at com.example.barryplayer.Chargement$1.handleMessage(Chargement.java:31)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at android.os.Looper.loop(Looper.java:137)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at android.app.ActivityThread.main(ActivityThread.java:4441)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at java.lang.reflect.Method.invoke(Method.java:511)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    05-09 16:29:18.017: E/AndroidRuntime(5690): 	at dalvik.system.NativeStart.main(Native Method)

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Ben voila... text_chargement est null...

    Donc (TextView)findViewById(R.id.id_view_chargement); retourne null
    Donc R.id.id_view_chargement n'existe pas dans le layout

    N'utilisant jamais GridLayout, je ne vais faire que "supputer":
    Il y a 1 seule colonne de définie.
    On met deux view dans la même ligne... résultat: le dernier élément va remplacer le premier (ProgressBar remplace TextView).

    D'ailleurs quel interêt d'utiliser GridLayout pour 1 ligne / 1 colonne ?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    J'ai modifié mon GridLayout en LinearLayout mais j'obtiens la même erreur ...

    mon xml :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
     
        <TextView
            android:id="@+id/id_view_chargement"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="initialisation ..." />
     
        <ProgressBar
            android:id="@+id/id_progress_chargement"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
     
     
    </LinearLayout>
    LogCat:

    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
    05-09 18:31:44.477: D/smp(8411): Thread: Début du Thread ...
    05-09 18:31:44.477: D/smp(8411): Thread: Simulation calcul ip Broadcast ...
    05-09 18:31:44.487: D/TextLayoutCache(8411): Using debug level: 0 - Debug Enabled: 0
    05-09 18:31:44.537: D/libEGL(8411): loaded /system/lib/egl/libGLES_android.so
    05-09 18:31:44.537: D/libEGL(8411): loaded /system/lib/egl/libEGL_adreno200.so
    05-09 18:31:44.547: D/libEGL(8411): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
    05-09 18:31:44.547: D/libEGL(8411): loaded /system/lib/egl/libGLESv2_adreno200.so
    05-09 18:31:44.587: D/OpenGLRenderer(8411): Enabling debug mode 0
    05-09 18:31:46.487: D/smp(8411): Thread: Simulation recherche rasberry ...
    05-09 18:31:46.487: D/AndroidRuntime(8411): Shutting down VM
    05-09 18:31:46.487: W/dalvikvm(8411): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
    05-09 18:31:46.487: E/AndroidRuntime(8411): FATAL EXCEPTION: main
    05-09 18:31:46.487: E/AndroidRuntime(8411): java.lang.NullPointerException
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at com.example.barryplayer.Chargement.traitement_message(Chargement.java:74)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at com.example.barryplayer.Chargement$1.handleMessage(Chargement.java:31)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at android.os.Looper.loop(Looper.java:137)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at android.app.ActivityThread.main(ActivityThread.java:4441)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at java.lang.reflect.Method.invoke(Method.java:511)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    05-09 18:31:46.487: E/AndroidRuntime(8411): 	at dalvik.system.NativeStart.main(Native Method)

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    La ligne 74 de Chargment.java c'est bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text_chargement.setText("Calcul broadcast ...");
    ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Problème exécution Framework 2.0
    Par Tips dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/07/2006, 10h17
  2. [PHP-JS] Problème exécution fonction php avec js
    Par cokilulu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 21h34
  3. Réponses: 4
    Dernier message: 09/12/2005, 22h17
  4. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39
  5. [JTextField] Problème de setText()
    Par deathwing dans le forum Composants
    Réponses: 4
    Dernier message: 09/06/2004, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo