Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 37
  1. #1
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut [Tutoriel] Communication base de données via script PHP

    Bonjour à tous et à toutes,

    Je vous propose un nouveau tutoriel sur le sujet:
    Créer une page de login et vérifier l’identification en communiquant avec la base de donnée via un script PHP.

    Vous pouvez poster ici toutes vos questions sur ce tutoriel

    Bonne lecture à tous et à toutes!
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  2. #2
    Membre éprouvé
    Homme Profil pro Yann
    IUT Informatique
    Inscrit en
    mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Nom : Homme Yann
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : mars 2011
    Messages : 411
    Points : 455
    Points
    455

    Par défaut

    Hum bon tuto, dommage que tu l'ai pas fait bien avant (quand j'en avait besoin lol). Juste peut être qu'il faudrait préciser que c'est une "requête HTTP synchrones" que tu met en place dans le tuto (si je me trompe pas).

    Et du coup, vu que c'est synchrone, la progressDialog évolue bien? (la roulette tourne?) Parce qu'il me semble qu'en requête synchrone l'écran reste figé

  3. #3
    Inscrit

    Inscrit en
    février 2008
    Messages
    659
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 659
    Points : 801
    Points
    801

    Par défaut

    Un bon travail mais tu devrais le perfectionner avant car meme s'il y'a pas d'erreur, il y'a probleme de performance derriere : Par exemple il faut toujours eviter de lancer une requete de connection dans la main thread et de plus tu as carrement pris la class Exception au lieu de IOException....

  4. #4
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    Merci pour ces retours!

    Bien entendu ce tuto vous montre les bases! A vous de programmer comme il le faut par la suite! Arranger le code à votre manière afin qu'il fonctionne comme vous le souhaitez

    Je prendrai en compte vos remarques pour la mis à jour du tuto
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  5. #5
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 7
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    Merci pour ce tutorial, j'ai bien avancé grâce à ça.

    Dans la classe "LoginContentHandler", les fonctions startDocument, EndElement, EndDocument et caracters fonctionnent bien.

    Cependant ma fonction startElement ne se lance pas Elle est pourtant (je pense) correctement écrite.

    Eclipse me met un warning pour indiquer que la fonction n'est jamais utilisée localement et propose de la supprimer.

    Code :
    1
    2
    3
    4
     
    public void startElement ( String uri, String localName, String qName, Attributes MesAttri) throws SAXException {
      Log.w("TEST", "startElement sur tag = " + localName);
    }
    Si vous avez une idée ?

  6. #6
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    Bonjour,

    Ta classe hérite bien de Defaulthandler?
    Si oui ajoute @Override avant tes fonctions, ceci permettra de préciser que c'est une surcharge d'une fonction existante de la classe mère.

    Sinon à quoi ressemble ta fonction? Qu'as tu modifié? Où appelles tu ta classe? et comment?
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  7. #7
    Membre régulier
    Homme Profil pro kalidou dieng
    Développeur informatique
    Inscrit en
    janvier 2010
    Messages
    371
    Détails du profil
    Informations personnelles :
    Nom : Homme kalidou dieng
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2010
    Messages : 371
    Points : 75
    Points
    75

    Par défaut

    merci pour ce tutoriel , est ce que ce tutoriel peut marcher avec une application realisé avec J2EE pas le php

  8. #8
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 7
    Points : 10
    Points
    10

    Par défaut

    Citation Envoyé par David55 Voir le message
    Bonjour,

    Ta classe hérite bien de Defaulthandler?
    Si oui ajoute @Override avant tes fonctions, ceci permettra de préciser que c'est une surcharge d'une fonction existante de la classe mère.

    Sinon à quoi ressemble ta fonction? Qu'as tu modifié? Où appelles tu ta classe? et comment?
    Merci de ta réponse.

    @Override n'a pas résolu mon problème.

    Voici mon code :

    Code :
    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
     
     
    private class MySaxHandler extends DefaultHandler {
     
     
         public void read (InputStream input){
     
    	SAXParserFactory spf = SAXParserFactory.newInstance();
    	SAXParser sp;
     
    	try {
    		sp = spf.newSAXParser();
    		XMLReader xr = sp.getXMLReader();
     
    		xr.setContentHandler( this );
    		xr.parse(new InputSource(input));
     
    	}
    	catch (ParserConfigurationException e) {
    		Log.e("XML", "PASCAL : ParserConfigurationException");	
    	}
    		catch (SAXException e) {
    		Log.e("XML", "PASCAL : SAXException");
    	}
    	catch (IOException e) {
    		Log.e("XML", "PASCAL : IOException");
    	}
        }
     
     
        @Override
        public void startDocument() throws SAXException {
    		Log.w("XML", "PASCAL : startDocument du XML");
    	}
     
         public void startElement ( 
                String uri, String localName, 
                String qName, Attributes MesAttri ) throws SAXException {
     
    	    Log.w("XML", "PASCAL : startElement du XML : Debut TAG = " + localName);
    	}
     
     
         public void characters( char ch[], int start, int length  )
              {
                   //Log.w("XML", "PASCAL : characters du XML : ch[0]  = " + phrase );
              }
     
         public void endElement ( String uri, String localName, String qName)
         throws SAXException {
              Log.w("XML", "PASCAL : endElement du XML : Fin TAG = " + localName);			
    	   }
     
     
         public void endDocument() throws SAXException {
              Log.w("XML", "PASCAL : endDocument du XML");
    	}
     
     
        }
    Donc toutes mes fonctions fonctionnent, j'ai bien les infos de mon XML sauf startElement qui ne semble pas être reconnu.

    P.S : Désolé pour le temps de réponse mais j’étais sur un autre soucis ce matin hors Android.

  9. #9
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    @pascalp59:

    Bonjour,

    Tout d'abord ta fonction read ne devrait pas être dans cette classe (cf. le tuto).

    Sinon, si tu veux la laisser dedans, comment as tu fais pour l'appeler?

    La fonction startElement est appelée lorsque tu écris new MySaxHandler, cependant, dans ton code je vois ceci nulle part!

    ________________________

    @diengkals
    merci pour ce tutoriel , est ce que ce tutoriel peut marcher avec une application realisé avec J2EE pas le php
    A tester! La réponse m’intéresse
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  10. #10
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 7
    Points : 10
    Points
    10

    Par défaut

    Voici comment j'appelle ma classe et fonction Read :

    Code :
    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
     
     
    Looper.prepare();
     
    //On se connecte au serveur afin de communiquer avec le php
    DefaultHttpClient client = new DefaultHttpClient();
    HttpConnectionParams.setConnectionTimeout( client.getParams(), 15000);
     
     
    HttpResponse ReponsePHP;
    HttpEntity entity;
     
    try {
    	//On etablit un lien vers le php
    	HttpPost post = new HttpPost( URL_XML );
     
    	//Ajout de parametre en post
    	List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    	nvps.add( new BasicNameValuePair("Parametre1", "savaleur"));
    	nvps.add( new BasicNameValuePair("Parametre2", "savaleur"));
     
            post.setHeader("Content-Type", "application/x-www-form-urlencoded");
    	post.setEntity( new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
     
    	//Execution et Recuperation de la reponse
    	ReponsePHP = client.execute(post);					
    	entity = ReponsePHP.getEntity();
     
    	//Traduction de la reponse XML
    	InputStream MonXML = entity.getContent();
    	MySaxHandler handler = new MySaxHandler();
    	handler.read(MonXML);
    	MonXML.close();
     
    	if (entity != null)
    		entity.consumeContent();
     
    }
    catch (Exception e) {
    	Log.e("PHP P.", "PASCAL : Erreur dans la lecture du PHP " + e.getMessage() + " -- " + e.hashCode() + " -- " + e.getCause());
    }
     
    Looper.loop();
    Pour rappel, toutes mes fonctions dans ma classe MySaxHandler fonctionnent sauf la fonction startElement qui ne semble pas être reconnu comme une fonction à surcharger.

  11. #11
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    Bonjour,

    La première remarque que je peux observer est que ce n'est pas tout à fait la même chose que dans le tuto.

    A première vu je te dirais d'essayer de définir la fonction read au même endroit que ton code post au dessus! (tout comme le tuto!)
    Dis moi si tu as la même erreur car ce que tu fais reviens au même mais est écrit différemment donc c'est assez étrange!

    EDIT: J'essaye de prendre la même logique que toi. Ca me donnerai:
    Appelle à ma classe LoginContentHandler :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	/*...*/
    	entity = response.getEntity();
     
    	InputStream is = entity.getContent();
     
    	LoginContentHandler uch = new LoginContentHandler();
    	uch.read(in);
     
    	in.close();
    	/*...*/
    Ma classe LoginContentHandler :
    Code :
    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
     
     
    	private class LoginContentHandler extends DefaultHandler
    	{
    		// Classe traitant le message de retour du script PHP
    		private boolean	in_loginTag		= false;
    		private int			userID;
    		private boolean	error_occured	= false;
     
    		private void read(InputStream in)
    		{
    			SAXParserFactory spf = SAXParserFactory.newInstance();
    			SAXParser sp;
    			try
    			{
    				sp = spf.newSAXParser();
     
    				XMLReader xr = sp.getXMLReader();
     
    				xr.setContentHandler(this);
     
    				xr.parse(new InputSource(in));
    			}
    			catch (ParserConfigurationException e)
    			{
     
    			}
    			catch (SAXException e)
    			{
     
    			}
    			catch (IOException e)
    			{
    			}
    		}
     
    		public void startElement(String n, String l, String q, Attributes a)
     
    		throws SAXException
     
    		{
     
    			if (l == "login")
    				in_loginTag = true;
    			if (l == "error")
    			{
     
    				progressDialog.dismiss();
     
    				switch (Integer.parseInt(a.getValue("value"))
    				{
    					case 1:
    						createDialog("Error", "Couldn't connect to Database");
    						break;
    					case 2:
    						createDialog("Error", "Error in Database: Table missing");
    						break;
    					case 3:
    						createDialog("Error", "Invalid username and/or password");
    						break;
    				}
    				error_occured = true;
     
    			}
     
    			if (l == "user" && in_loginTag && a.getValue("id") != "")
    				// Dans le cas où tout se passe bien on récupère l'ID de l'utilisateur
    				userID = Integer.parseInt(a.getValue("id"));
     
    		}
    		/*...*/
    		}
    Je n'ai pas tester! A comparer avec ton programme. Je répète, ceci me parait bizarre de définir la fonction read dans cette classe
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  12. #12
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2011
    Messages : 7
    Points : 10
    Points
    10

    Par défaut

    En fait je suis parti d'un autre tuto (pas terrible) et j'ai trouvé le tien que j'ai mieux compris (enfin je pensais ) J'ai donc adapté mon code pour utiliser ton tuto.

    Comme toutes les fonctions se lancent sauf celle la je pensais que ma logique était correcte. Après je n'avais encore jamais fait de Java et Android donc un peu de mal sur la logique de programmation du java. Je suis plus habitué au genre php, web, laszlo, etc...

    Je vais reprendre ta logique et essayer ce que tu proposes, si je n'y arrive pas. Je recommencerai le tuto à 0. J'ai forcement du louper quelques chose mais c'est vraiment bizarre que java ne comprennent pas uniquement cette fonction et lance le reste.

    Merci pour ton aide en tout cas.


    RESOLU :

    Vu sur une aide d'un autre site :
    Generates compile-time error if startElement is not correctly overriden. This method generates a compile-error "final method cannot be overridden" if org.xml.sax.Attributes is used instead of javolution.xml.sax.Attributes (common mistake).
    Eclipse par défaut m'a proposé un mauvais import. Je ne savais pas qu'il y avait plusieurs choix. Maintenant je me coucherai moins c**

    Je me disais aussi c'était bien bizarre.

    Merci pour ton aide et surtout pour le tuto.

    Une question : Existe-t-il la possibilité sans parcourir tout le XML de trouver une information ?
    Par exemple, je recherche le noeud qui a l'attribut id="1".

    En XML le path : MonXML:/ROOT/MON_NOEUD[@id='1']

  13. #13
    Membre régulier
    Homme Profil pro kalidou dieng
    Développeur informatique
    Inscrit en
    janvier 2010
    Messages
    371
    Détails du profil
    Informations personnelles :
    Nom : Homme kalidou dieng
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2010
    Messages : 371
    Points : 75
    Points
    75

    Par défaut

    @David55
    bonjour David tu l as pas sur une application J2EE car je n en besoin mais ça marche pas chez moi. si quelqu' un l a fait sur une application qu il m aide merci d avance

  14. #14
    Responsable Android

    Avatar de Feanorin
    Inscrit en
    avril 2004
    Messages
    4 111
    Détails du profil
    Informations forums :
    Inscription : avril 2004
    Messages : 4 111
    Points : 7 691
    Points
    7 691

    Par défaut

    Une question : Existe-t-il la possibilité sans parcourir tout le XML de trouver une information ?
    Par exemple, je recherche le noeud qui a l'attribut id="1".
    Oui c'est possible via la méthode SAX. SAX construit son Xml au fur à mesure il ne construit pas d'arbre comparé à DOM. Donc lorsque tu rencontre l'élèment que tu souhaitais trouver il ne te reste plus qu'à arrêter ton parser .

    Après tu peux même l'optimiser si tu sais que ton élément se trouve dans les n premiers caractères tu peux ne lui passer qu'une partie de ton fichier ce qui aura le mérite de ne pas l'avoir en mémoire totalement .

    Pour l'arrêter tu peux remonter un exception , je ne me rappelle plus si une procédure/fonction existe pour un tel cas.n Si tu la trouve je suis intéressé .

  15. #15
    Invité de passage
    Inscrit en
    août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 3
    Points : 3
    Points
    3

    Par défaut

    Pourquoi ne pas avoir utiliser la classe AsyncTask à la place de l'utilisation de Thread et d'handler.
    Tu aurais allégé le code et cette classe est justement faite pour le besoin que tu exprimes dans le sujet...

  16. #16
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    Citation Envoyé par arnouf Voir le message
    Pourquoi ne pas avoir utiliser la classe AsyncTask à la place de l'utilisation de Thread et d'handler.
    Tu aurais allégé le code et cette classe est justement faite pour le besoin que tu exprimes dans le sujet...
    Pourquoi pas c'est une autre possibilité, vous êtes libre!
    Si tu as un exemple je suis preneur
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  17. #17
    Membre à l'essai
    Inscrit en
    juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 18
    Points : 24
    Points
    24

    Par défaut

    Intéressant .
    Par contre je suis un peu étonné que le Handler SAX marche.

    Code :
    ...if (l == "login")...
    Je comprend même pas comment ça peut fonctionner, pour moi il compare les références.

  18. #18
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    Citation Envoyé par JejeWIll Voir le message
    Intéressant .
    Par contre je suis un peu étonné que le Handler SAX marche.

    Code :
    ...if (l == "login")...
    Je comprend même pas comment ça peut fonctionner, pour moi il compare les références.


    Source tiré du tutoriel : http://smeric.developpez.com/java/cours/xml/sax/
    startElement

    Démarrage d'un élément XML... Enfin ! Et oui, on peut en effet pour démarrer avec SAX se contenter de comprendre cet événement et son traitement ainsi que son contraire pour analyser un flux xml de manière très puissante et efficace. Nous allons donc nous pencher un peu plus sur cet événement.

    startElement (String namespaceUri, String localName, String rawName, Attributs atts);

    où nameSpaceUri est la chaîne de caractères contenant l'URI complète de l'espace de nommage du tag ou une chaîne vide si le tag n'est pas compris dans un espace de nommage,
    localName est le nom du tag sans le préfixe s'il y en avait un,
    rawName est le nom du tag version xml 1.0 c'est à dire $prefix:$localname,
    Enfin attributs est la liste des attributs du tag que l'on étudiera un peu plus loin.
    Ici, nous attendons donc un tag
    Nous voulons récupérer ce qu'il y a dans les balises <login> de notre XML
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  19. #19
    Membre à l'essai
    Inscrit en
    juillet 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 18
    Points : 24
    Points
    24

    Par défaut

    Citation Envoyé par David55 Voir le message
    Source tiré du tutoriel : http://smeric.developpez.com/java/cours/xml/sax/


    Ici, nous attendons donc un tag
    Nous voulons récupérer ce qu'il y a dans les balises <login> de notre XML
    Pas de soucis ce n'est pas à ce niveau là que ça bloque (j'ai déjà fait beaucoup trop d'handler SAX à mon goût).

    Je parle au niveau langage JAVA, pour comparer 2 objets on utilise la méthode equals, et non == qui compare les références. voir http://stackoverflow.com/questions/7...-equals-versus

    Du coup je comprend pas comment le handler peut fonctionner, y a-t-il une subtilité que je n'ai pas saisie?

    edit : Peut être un élément de réponse
    It's good to notice that in some cases use of "==" operator can lead to the expected result, because the way how JVM handling strings - string literals are interned (see String.intern()) - so when you write for example "hello world" in two classes and compare those strings with "==" you could get result: true, which is expected, but it's only side effect of jvm optimizations; when you compare same strings (linguistically) when the first is string literal (ie. defined through "string") and second is constructed through "new" keyword like new String("string") using of == (equality operator) returns false, because both of them are different instances of String class.

  20. #20
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 478
    Points : 2 601
    Points
    2 601

    Par défaut

    Personnellement rien ne me choque la dessus!

    Nous comparons 2 chaines de caractère!

    L'opérateur == peut être utilisé si nous voulons vérifier l'égalité strict.

    The == operator checks to see if two objects are exactly the same object.
    Visitez mon blog : http://easy-android.over-blog.com/

    Utilisez les bonnes pratiques Android !

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •