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 :

ContentHandler et Activité: transmission de données


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut ContentHandler et Activité: transmission de données
    Bonjour tout le monde,

    Je travaille en ce moment sur une appli android et je suis bloqué
    Dans les tutos que j'ai pu lire sur les content handler android, il y a simplement des syso qui affichent les données (genre entrée de balise etc) sachant que j'utilise SAX comme parser. Le soucis c'est que moi je dois envoyer des données depuis mon content handler à mon activité.

    En gros je parse mon XML, et j'aimerais y compter le nombre de fois qu'une balise est appelé et mettre dans un tableau le texte qu'il y a entre les balises. Entre j'aimerais envoyer le tableau et le nombre à mon activité qui va s'occuper à créer un nombre équivalent de boutons en fonction du nombre reçu du content handler et va mettre comme nom de bouton, le text au bon endroit dans le tableau (lui aussi recu depuis le content handler).

    Voici mon contentHandler:

    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
    package mpam.base;
     
    import java.util.ArrayList;
     
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
     
    public class GestionnaireContenuAffParcours extends DefaultHandler {
    	String eltName="";
    	static int nbParcours=0;
    	static String lib[]=null;
    	int numLib=0;
     
     
    	public void startElement(String namespaceURI, String localName,  String rawName, Attributes atts) throws SAXException {
    		eltName = localName;  
     
     
    	}
    	// Pour les noeuds textes
    	public void characters (char[] ch, int start, int length) {
    	    String text = new String (ch, start, length);
    	    if(eltName.equals("profil")){
    		  	   nbParcours++;
    		}
    	    if(eltName.equals("libelle")){
    	    	lib[numLib]=text;
    	    	numLib++;
    		}
    	}
     
    	public static int getNbParcours(){
    		return nbParcours;
    	}
     
     
    	/**
             * @return the lib
             */
    	public static String[] getLib() {
    		return lib;
    	}
     
     
    }
    Le soucis c'est que avec ce code: ça me fait un null pointer exception si j'essai d'afficher le texte du bouton, et si je ne veux même pas afficher ce texte, ça me met que un seul bouton alors qu'il m'en faudrait 4.

    Voici la boucle qui est censé afficher les boutons dans mon activité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Button[] b1 = null;
            b1 = new Button[nbParcours];
            for(int i=0;i<nbParcours;i++)
            {
     
            b1[i] = new Button(this);
            b1[i].setText(libButton[i]);
            test.addView(b1[i],params);
            }
    et dans mon constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nbParcours=GestionnaireContenuAffParcours.getNbParcours();
    		libButton=GestionnaireContenuAffParcours.getLib();

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Bonjour
    En ce qui concerne SAX, je pense qu'il faudrait poser les questions dans une autre rubrique, car le SAX de java est comme le SAX d'Android.
    Par contre pour la nullPointerException, j'aimerai bien voir le contenu du log pour savoir ce qui la cause exactement.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut
    D'accord, je vais voir où je pourrais poster. Voici le log:


    12-25 15:50:51.242: W/System.err(311): java.lang.NullPointerException
    12-25 15:50:51.253: W/System.err(311): at mpam.base.GestionnaireContenuAffParcours.characters(GestionnaireContenuAffParcours.java:28)
    12-25 15:50:51.253: W/System.err(311): at org.apache.harmony.xml.ExpatParser.text(ExpatParser.java:166)
    12-25 15:50:51.253: W/System.err(311): at org.apache.harmony.xml.ExpatParser.append(Native Method)
    12-25 15:50:51.253: W/System.err(311): at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:506)
    12-25 15:50:51.253: W/System.err(311): at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:467)
    12-25 15:50:51.253: W/System.err(311): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329)
    12-25 15:50:51.253: W/System.err(311): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286)
    12-25 15:50:51.253: W/System.err(311): at mpam.base.MenuActivity.getXML(MenuActivity.java:43)
    12-25 15:50:51.253: W/System.err(311): at mpam.base.MenuActivity.<init>(MenuActivity.java:26)
    12-25 15:50:51.253: W/System.err(311): at java.lang.Class.newInstanceImpl(Native Method)
    12-25 15:50:51.253: W/System.err(311): at java.lang.Class.newInstance(Class.java:1479)
    12-25 15:50:51.253: W/System.err(311): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    12-25 15:50:51.253: W/System.err(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
    12-25 15:50:51.253: W/System.err(311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    12-25 15:50:51.253: W/System.err(311): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    12-25 15:50:51.253: W/System.err(311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    12-25 15:50:51.253: W/System.err(311): at android.os.Handler.dispatchMessage(Handler.java:99)
    12-25 15:50:51.253: W/System.err(311): at android.os.Looper.loop(Looper.java:123)
    12-25 15:50:51.253: W/System.err(311): at android.app.ActivityThread.main(ActivityThread.java:4363)
    12-25 15:50:51.253: W/System.err(311): at java.lang.reflect.Method.invokeNative(Native Method)
    12-25 15:50:51.253: W/System.err(311): at java.lang.reflect.Method.invoke(Method.java:521)
    12-25 15:50:51.262: W/System.err(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    12-25 15:50:51.262: W/System.err(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    12-25 15:50:51.262: W/System.err(311): at dalvik.system.NativeStart.main(Native Method)
    12-25 15:50:51.272: D/AndroidRuntime(311): Shutting down VM
    12-25 15:50:51.272: W/dalvikvm(311): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
    12-25 15:50:51.272: E/AndroidRuntime(311): Uncaught handler: thread main exiting due to uncaught exception
    12-25 15:50:51.272: E/AndroidRuntime(311): java.lang.RuntimeException: Unable to start activity ComponentInfo{mpam.base/mpam.base.MenuActivity}: java.lang.NullPointerException
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.os.Handler.dispatchMessage(Handler.java:99)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.os.Looper.loop(Looper.java:123)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.ActivityThread.main(ActivityThread.java:4363)
    12-25 15:50:51.272: E/AndroidRuntime(311): at java.lang.reflect.Method.invokeNative(Native Method)
    12-25 15:50:51.272: E/AndroidRuntime(311): at java.lang.reflect.Method.invoke(Method.java:521)
    12-25 15:50:51.272: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    12-25 15:50:51.272: E/AndroidRuntime(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    12-25 15:50:51.272: E/AndroidRuntime(311): at dalvik.system.NativeStart.main(Native Method)
    12-25 15:50:51.272: E/AndroidRuntime(311): Caused by: java.lang.NullPointerException
    12-25 15:50:51.272: E/AndroidRuntime(311): at mpam.base.MenuActivity.onCreate(MenuActivity.java:81)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    12-25 15:50:51.272: E/AndroidRuntime(311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
    12-25 15:50:51.272: E/AndroidRuntime(311): ... 11 more
    12-25 15:50:51.282: I/dalvikvm(311): threadid=7: reacting to signal 3
    12-25 15:50:51.282: E/dalvikvm(311): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mpam.base.GestionnaireContenuAffParcours.characters(GestionnaireContenuAffParcours.java:28)
    Il faut donc regarder la ligne 28 du fichier GestionnaireContenuAffParcours.java qui utilise un objet non-déclaré (nullPointerException)
    Voir aussi ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mpam.base.MenuActivity.onCreate(MenuActivity.java:81)

  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
    D'apres le source que tu as posté... "lib" n'est jamais alloué (et donc à null)....

    lib[xx] va donc forcément créer un NPE.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Par défaut
    Ouai j'ai bien vu ^^ Le soucis c'est que c'est alloué dans le XML la ligne 28 etant: lib[numLib]=text; de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(eltName.equals("libelle")){
    	    	lib[numLib]=text;
    	    	numLib++;
    		}
    Donc soit mon parser est mal foutu ou alors la transmission du tableau des du nb est mal envoyé à mon activité, ce qui nous ramène à l'origine de ce post ^^ (J'ai également posté dans JAVA/XML au cas où)

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/06/2013, 22h37
  2. ContentHandler et Activité: transmission de données
    Par Jojo____ dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 25/12/2011, 16h54
  3. transmission de donnée
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/04/2006, 17h09
  4. Transmission de donnés
    Par scaleo dans le forum Langage
    Réponses: 5
    Dernier message: 25/09/2005, 21h18
  5. Réponses: 2
    Dernier message: 13/05/2005, 15h20

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