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 :

Changer de page par un choix sur un Spinner


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Changer de page par un choix sur un Spinner
    Bonjour,

    Je suis en train de développer une application et je voudrais qu'elle change de page automatiquement lorsqu'on choisit un item du Spinner.

    C'est-à-dire, par exemple si mon spinner contient les choix 1, 2, 3, 4 et 5, si je choisies l'item 3, je veux qu'il m'amène sur la page correspondante.

    J'ai vu brièvement que la classe doit implémenter l'interface "OnItemSelectedListener" et implémenter les méthodes.

    Voici ce que j'ai tenté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    	   // An item was selected. You can retrieve the selected item using
    	   // parent.getItemAtPosition(pos)
    		Spinner sp = (Spinner) findViewById(R.id.ChiffreSpinner);
    		String nombre = sp.getSelectedItem().toString();
    		sp.setOnItemSelectedListener(this);
    		if (nombre.equals("1"))
    		{
    			Intent intent = new Intent(this,P1Activity.class);
    			this.setResult(RESULT_OK, intent);	
    			startActivity(intent);
    		}
    	}
    Merci!

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tu mélange un peu tout.

    La déclaration de ton spinner doit se faire dans le onCreate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Spinner sp = (Spinner) findViewById(R.id.ChiffreSpinner);
    Puis tu lui associe un eventListener :

    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
    sp.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            if (position == 1) {
    			Intent intent = new Intent(this,P1Activity.class);
    			this.setResult(RESULT_OK, intent);	
    			startActivity(intent);
    	}
        }
     
        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
     
        }
     
    });
    J'ai défini OnItemSelectedListener comme InnerClass mais tu peux aussi l'implémenter au niveau de ton activity si tu prefères
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta proposition

    Mais si je le fais comme toi, il m'affiche deux erreurs :
    - le fait que je ne peux pas faire un Intent comme ça
    - que la méthode setResult n'est pas valable

    Tu pourrais m'aider encore une fois stp? ^^

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Bonjour,
    Citation Envoyé par grunk Voir le message
    La déclaration de ton spinner doit se faire dans le onCreate :
    Pas obligatoirement si le spinner doit aussi être utilisé ailleurs que dans onCreate(...). Sa portée serait dans ce cas limitée et il ne serait pas visible ailleurs.
    La déclaration peut se faire en global et le gonflement de view dans onCreate(...).

    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 587
    Points
    587
    Par défaut
    Un conseil, utilise les switch case au lieu des if pour déterminer l'action en fonction de la valeur du spinner. Avec 1 ou 2 valeur, ca va, mais si t'en as une dizaine, c'est beaucoup plus lisible.

    Sinon ca ne marche pas car ton "this" ne réfère pas à l'activité mais à la méthode en cours. Du coup, onItemSelected.setResult n'existe pas. Remplace les 2 this par

  6. #6
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par bsoso Voir le message
    Merci pour ta proposition

    Mais si je le fais comme toi, il m'affiche deux erreurs :
    - le fait que je ne peux pas faire un Intent comme ça
    - que la méthode setResult n'est pas valable

    Tu pourrais m'aider encore une fois stp? ^^
    Le code de grunk est correct seulement son contexte d'utilisation est mal compris. Son code exige que l'activty implémente l'interface OnItemSelectedListener. Si tu veux que ce soit comme InnerClass (comme il est présenté dans le code) tu dois remplacer partout où il y a this par tonActivity.this.

    Le code se présenterait alors comme suit :
    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
     
    sp.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            if (position == 1) {
    			Intent intent = new Intent(tonActivity.this,P1Activity.class);
    			tonActivity.this.setResult(RESULT_OK, intent);	
    			startActivity(intent);
    	}
        }
     
        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
     
        }
     
    });
    Christian,
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  7. #7
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par Turvy Voir le message
    ton "this" ne réfère pas à l'activité mais à la méthode en cours.
    "this" ne fait pas référence à une méthode mais plutôt à une classe (l'instance courante de la classe elle-même).

    Citation Envoyé par Turvy Voir le message
    Tu as peut être inversé l'ordre...
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 587
    Points
    587
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Tu as peut être inversé l'ordre...
    Oui, c'est mieux. Je m'en suis rendu compte après, mais je n'avais plus accès à l'ordi pour répondre.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci à tous! ça marche =)

    J'ai une autre petite question toujours pour le changement de page..

    Si j'ai un string-array comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <string-array name="couleurs">
            <item name="couleurs">Couleurs</item>
            <item name="bleu">Bleu</item>
        	<item name="rouge">Rouge</item>
        	<item name="vert">Vert</item>
        </string-array>
    et que das cette partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
    		        if (position == 2) {
    					Intent intent = new Intent(MonActivity.this,P2.class);
    					Mon.this.setResult(RESULT_OK, intent);	
    					startActivity(intent);
    		        }
    		    }
    je veux changer de page en fonction de la couleur sélectionnée, est-ce que je suis obligée de passer par le numéro de la position ou je peux vérifier directement par le nom de l'item du string-array?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 587
    Points
    587
    Par défaut
    Avec les if/else, tu peux accéder directement à l'item de ton Array et rajouter des items après coup sans que rien ne change, mais pas avec un switch case.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/04/2008, 17h44
  2. changer la page par une condition
    Par sofiane44 dans le forum Langage
    Réponses: 1
    Dernier message: 17/01/2007, 18h45
  3. Changer la page par défaut
    Par mekloub dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 21/09/2006, 13h09
  4. [glade]Changer de page sur un notebook
    Par Poutchjay dans le forum GTK+ avec Python
    Réponses: 1
    Dernier message: 16/01/2006, 08h29
  5. charger nouvelle page par clic sur bouton (pas pop-up)
    Par michaelbob dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/09/2005, 16h04

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