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

Composants graphiques Android Discussion :

Problème d'affichage d'un textview qui se trouve dans un fragment


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Par défaut Problème d'affichage d'un textview qui se trouve dans un fragment
    Bonjour,

    Mon problème:
    Mon activité comporte 6 fragments qui comportent plusieurs textview.
    A partir de mon activité j'aimerai pouvoir afficher des informations dans chacun de ces textview.
    le problème est que dès que j'envoie une donnée à afficher mon application arrête de fonctionner.

    Mon application arrête de fonctionner lorsque je met les lignes de code suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Déclaration se trouvant au début de ma class
    TextView textview1;
     
    //Code se trouvant dans un switch qui vient afficher les données en fonction du fragment visible.
    textview1 =(TextView)findViewById(R.id.affichage1);
    textview1.setText(String.valueOf(1)); // --> Mon application fonctionne si je met cette ligne en commentaire
    Je pense que mon problème est lié à mon activité qui doit venir afficher dans un textview, qui se trouve dans un fragment. (Relation activité --> fragment)

    A mon avis ,cette ligne de code ci-dessous doit être modifiée mais je ne sais pas comment le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    textview1 =(TextView)findViewById(R.id.affichage1);
    Merci à tous ceux qui pourront m’aider.



    Autre:
    Où puis - je trouver les règles à respecter en programmation
    --> Majuscule au début des méthodes etc...

  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
    Pour les "conventions" java c'est là:
    http://www.oracle.com/technetwork/ja...oc-136057.html

    Et c'est justement l'inverse .... ^^

    Majuscule au début reservé aux:
    * Constantes (en fait toute la constante est en majuscules)
    * Nom de types (Camel Case)

    '_' interdit

    Membres, Variables locales & Paramètres: Camel case... minuscule au début

  3. #3
    Membre chevronné
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 175
    Par défaut
    Salut,

    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textview1 = (TextView) getView().findViewById(R.id.affichage1);
    si ça ne fonctionne pas, peux tu mettre les logs qui te sont renvoyés

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Par défaut
    J'ai essayé getView() sans succès.

    voici mon code

    Un thread qui tourne en tache de fond
    envoi une information a un handler
    qui vient lancer une méthode qui affiche dans mes différents fragments

    n’hésitai pas à me dire si cette façon de procéder est bonne ou si il faut que je la modifie.

    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
     
    public void treadRun(final View v)
    	{
     
    		new Thread(new Runnable() 
    		{
    		    public void run() 
    		    {
    		    	while(1<2)
    		    	{			    	
    		        		remplissageDonnees();
    		        		m=1;
    		        		handler.sendMessage(handler.obtainMessage(m));
    			    		//Log.i("FragmentsSliderActivity.class","Methode Run lance pour calcul "+new Date().toString());
    			    		try 
    			    		{
    							Thread.sleep(500);
    						} 
    			    		catch (InterruptedException e) 
    						{
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    			    }
    		    }
    		  }).start();
    	}
     
    	Handler handler = new Handler() 
    	 {
     
    	        @Override
    	        public void handleMessage(Message msg)
    	        {
    	        	//Log.i("FragmentsSliderActivity.class","Methode Handler");
    	            if(m==1)
    	            {
    	            	affichageDonnes();
    	            }
     
    	        }
    	 };
     
    	 public void affichageDonnes()
    	 {
    		 	posFragment = pager.getCurrentItem();
    		 	test=(ProgressBar)findViewById(R.id.chargeBatteriePermanent);
     			Val=(int)(Math.random() * (100-0)) + 0;
     			test.setProgress(Val);
     			Log.i("FragmentsSliderActivity.class","Valeur de la page1 => "+posFragment);
     			switch(posFragment)
     			{
    	 			case 0:
    	 				Log.i("FragmentsSliderActivity.class","Valeur de la page1 ===> "+posFragment);
    		         	tempBatterie1=(TextView)findViewById(R.id.tempBatterie);
    		         	//tempBatterie1.setText(String.valueOf(1)); //---> le programme s'arrête si je met cette ligne
    		         	//progressBarChargeBatterie1=(ProgressBar)findViewById(R.id.progressBarChargeBatterie);
    		 			//progressBarChargeBatterie1.setProgress((int)(Math.random() * (100-0)) + 0);
    		         	break;
     
    	 			case 1:
    	 				break;
     
    	 			case 2:
    	 				break;
     
    	 			case 3:
    	 				break;
     
    	 			case 4:
    	 				break;
     
    	 			case 5:
    	 				break;
     			}
    	 }
    voici le 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
    24
     
    02-27 16:43:09.477: I/MyPagerAdapter.class(1958): Fragment -_-
    02-27 16:43:09.497: I/dalvikvm(1958): threadid=3: reacting to signal 3
    02-27 16:43:09.517: I/dalvikvm(1958): Wrote stack traces to '/data/anr/traces.txt'
    02-27 16:43:09.607: I/FragmentsSliderActivity.class(1958): Valeur de la page1 => 0
    02-27 16:43:09.607: I/FragmentsSliderActivity.class(1958): Valeur de la page1 ===> 0
    02-27 16:43:09.617: D/AndroidRuntime(1958): Shutting down VM
    02-27 16:43:09.617: W/dalvikvm(1958): threadid=1: thread exiting with uncaught exception (group=0xb616d180)
    02-27 16:43:09.617: E/AndroidRuntime(1958): FATAL EXCEPTION: main
    02-27 16:43:09.617: E/AndroidRuntime(1958): java.lang.NullPointerException
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at com.tutos.FragmentsSliderActivity.affichageDonnes(FragmentsSliderActivity.java:158)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at com.tutos.FragmentsSliderActivity$1.handleMessage(FragmentsSliderActivity.java:140)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at android.os.Looper.loop(Looper.java:137)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at java.lang.reflect.Method.invoke(Method.java:511)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    02-27 16:43:09.617: E/AndroidRuntime(1958): 	at dalvik.system.NativeStart.main(Native Method)
    02-27 16:43:10.257: I/dalvikvm(1958): threadid=3: reacting to signal 3
    02-27 16:43:10.268: I/dalvikvm(1958): Wrote stack traces to '/data/anr/traces.txt'
    02-27 16:43:10.457: I/dalvikvm(1958): threadid=3: reacting to signal 3
    02-27 16:43:10.467: I/dalvikvm(1958): Wrote stack traces to '/data/anr/traces.txt'
    je remarque qu'il rentre bien dans mon switch donc le problème vient après.
    j'ai testé plusieurs fois mon code en passant les lignes de code en commentaire au fur et à mesure et la ligne qui fait planter mon application
    c'est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    //tempBatterie1.setText(String.valueOf(1));
    mais je pense que c'est la ligne qui vient juste avant celle là qui fait réellement planter l'appli
    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tempBatterie1=(TextView)findViewById(R.id.tempBatterie);

  5. #5
    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
    Moi je pense surtout que tu as un problème de conception...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    02-27 16:43:09.617: W/dalvikvm(1958): threadid=1: thread exiting with uncaught exception (group=0xb616d180)
    Que veux tu faire exactement ? La le code appelle remplissageDonnees(); dans un thread non-UI toutes les 500ms.... et affichageDonnées() dans le thread-UI après (ou avant on ne sait pas trop). Le thread tourne indéfiniment avec un "sleep()" donc il y a eu erreur de conception.

    Bref je ne comprends pas le truc....
    Normalement la logique c'est:

    EVENEMENT-1 =>
    Démarrer un thread pour le remplissage-données... à la fin duquel on signale EVENEMENT-2

    EVENEMENT-2 =>
    En restant dans le thread-UI: affichage des données... à la fin... on *schedule* EVENEMENT-1 pour dans 500ms

    onResume() =>
    On lance EVENEMENT-1

    onStop() =>
    On vire tous les EVENEMENT-1 en attente

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 39
    Par défaut
    Merci necroman pour ta réponse
    Mais je suis un débutant en programmation androïd et java et je ne maitrise pas encore les thread.

    Donc si tu pouvais préciser comment appliquer ton idée cela m'aiderai beaucoup

    si je comprend ce que tu dis je devrai:

    Crée un thread qui exécute la méthode remplissageDonnées()
    et lorsque cela est fait je devrai venir afficher mes données en passant par un autre thread qui est réservé a l'affichage.
    Puis lorsqu'on visualise le fragment qui affichent les données, on vient
    rafraichir les données afficher et arrêter le rafraichissement des données lorsqu'on quitte le fragment ( pour passer a un autre fragment par exemple).

    Problème:

    Comment fait - on le signal ? j'utilise un Handler?

    Le thread ui, je vois souvent cela dans les différents tuto
    mais je ne sait pas comment l'utiliser et a quoi il correspond réellement à part qu'il est réservé a l'affichage de données.
    J'ai vu quelque exemple de thread ui sur plusieurs forum mais il me paraisse compliquer et pas "top".

    Pour le sleep(500); je sais qu'il faut éviter cela a tout pris car il bloque l'appli mais je vois pas comment le réaliser autrement.


    Merci d'avance.

Discussions similaires

  1. Problème d'affichage de deux TextView
    Par android84 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 01/02/2013, 13h38
  2. Probléme d'affichage de la valeur de code barre dans un champ de saisie
    Par youssef_rjili dans le forum Windev Mobile
    Réponses: 30
    Dernier message: 28/07/2011, 10h12
  3. Réponses: 0
    Dernier message: 13/12/2010, 09h34
  4. [MySQL] Problème pour récupèrer les champs d'un formulaire qui se trouve dans un while
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 21/03/2008, 14h59
  5. [Oracle] Problème d'affichage de valeurs contenant un caractère blanc dans un champ
    Par domray dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/02/2007, 17h11

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