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 :

Question sur la réalisation d'un spinner et d'une boite de dialogue dans une même activité


Sujet :

Composants graphiques Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 25
    Points : 12
    Points
    12
    Par défaut Question sur la réalisation d'un spinner et d'une boite de dialogue dans une même activité
    Bonjour, je suis actuellement en train d'essayer de créer une application, et j'ai un soucis avec une activité. En effet, celle-ci doit permettre à l'utilisateur de choisir un produit qui dysfonctionne dans un spinner, ensuite il décrit succinctement le problème dans un Edittext, enfin il clique sur envoyer et là une boite de dialogue apparaît pour dire que le message a bien été envoyé.

    Mon problème c'est que depuis que j'ai inséré les lignes de code pour la boite de dialogue, ma liste déroulante dans mon spinner ne fonctionne plus, et je vois pas pourquoi. Enfin je pense je pense que c'est du à la façon dont est organisé mon code dans l'activité.java, et du coup Eclipse pense qu'il n'y a qu'une seule action à réaliser.

    Voilà le code de l'activité concernée:

    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
    package com.blabla.blablaapp;
     
     
     
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.Spinner;
    import android.view.View;
    import android.view.View.OnClickListener;
     
    public class ServiceMeldungActivity extends Activity implements OnClickListener{
     
    	Spinner spin;
        String spin_val;
        String[] equipment = { "Equipment1", "Equipment2", "Equipment3", "Equipment4" };
        Button button1;
     
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_service_meldung);
     
    button1=(Button)findViewById(R.id.button1);
     
            button1.setOnClickListener(this);
    }      
     
        public void onClick(View arg0) {
            switch(arg0.getId()){
              case R.id.button1:
                    AlertDialog.Builder boite;
                    boite = new AlertDialog.Builder(this);
                    boite.setTitle("Sendebericht");
                    boite.setIcon(R.drawable.ic_launcher);
                        boite.setMessage("Die Nachricht wurde gesendet");
                    boite.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
     
                        public void onClick(DialogInterface dialog, int which) {
     
                        }
                        }
                    );
                    boite.show();
                         break;
            }
     
            spin = (Spinner) findViewById(R.id.spinner2);
            spin.setOnItemSelectedListener(new OnItemSelectedListener() {
     
            	@Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int position, long id) {                
                    spin_val = equipment[position];
     
     
                }
     
                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
     
                }
     
            });
            ArrayAdapter<String> spin_adapter = new ArrayAdapter<String>(ServiceMeldungActivity.this, android.R.layout.simple_spinner_item, equipment);
            spin.setAdapter(spin_adapter);
        }
    }
    Pourriez-vous m'expliquer l'erreur s'il vous plait et/ou comment on organise, dans le code en java, les différentes actions à réaliser?

  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
    Ton code lié à ton spinner est mal placé. Actuellement il est dans le onclick et non conditionné , ce qui veux dire qu'à chaque élément de ton interface qui va générer un onClick le code du spinner va être appelé.

    Déplace toute cette partie :

    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
    spin = (Spinner) findViewById(R.id.spinner2);
    spin.setOnItemSelectedListener(new OnItemSelectedListener() {
     
    	@Override
    	public void onItemSelected(AdapterView<?> arg0, View arg1,
    			int position, long id) {                
    		spin_val = equipment[position];
     
     
    	}
     
    	@Override
    	public void onNothingSelected(AdapterView<?> arg0) {
     
    	}
     
    });
    ArrayAdapter<String> spin_adapter = new ArrayAdapter<String>(ServiceMeldungActivity.this, android.R.layout.simple_spinner_item, equipment);
    spin.setAdapter(spin_adapter);
    dans le onCreate.
    Je suis pas certains qu'un alertDialog soit le meilleur choix pour notifier l'utilisateur. Si aucune action de sa part n'est requise, un simple toast est suffisant à mon avis.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 25
    Points : 12
    Points
    12
    Par défaut
    J'ai déplacé le bout de code en question dans le OnCreate, de cette manière:
    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
    package com.esiemensbt.siemensbtserviceapp;
     
     
     
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.Spinner;
    import android.view.View;
    import android.view.View.OnClickListener;
     
    public class ServiceMeldungActivity extends Activity implements OnClickListener{
     
    	Spinner spin;
        String spin_val;
        String[] equipment = { "Equipment1", "Equipment2", "Equipment3", "Equipment4" };
        Button button1;
     
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_service_meldung);
            spin = (Spinner) findViewById(R.id.spinner2);
            spin.setOnItemSelectedListener(new OnItemSelectedListener() {
     
                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int position, long id) { 
                    spin_val = equipment[position];
     
     
                }
     
                public void onNothingSelected(AdapterView<?> arg0) {
     
                }
     
            });
            ArrayAdapter<String> spin_adapter = new ArrayAdapter<String>(ServiceMeldungActivity.this, android.R.layout.simple_spinner_item, equipment);
            spin.setAdapter(spin_adapter);
    	}        
     
        public void onClick(View arg0) {
            switch(arg0.getId()){
              case R.id.button1:
                    AlertDialog.Builder boite;
                    boite = new AlertDialog.Builder(this);
                    boite.setTitle("Sendebericht");
                    boite.setIcon(R.drawable.ic_launcher);
                    boite.setMessage("Die Nachricht wurde gesendet");
                    boite.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
     
                        public void onClick(DialogInterface dialog, int which) {
     
                        }
                        }
                    );
     
                    boite.show();
                         break;
            }
     
        }
       }
    Désormais j'ai bien mon spinner qui fonctionne mais il ne se passe plus rien quand je clique sur "envoyer"...
    Et concernant la boite de dialogue, j'utilise cela parce que mon maître de stage m'a dit d'utiliser "des messagebox" pour simuler des réponses du serveur et que ça s'en rapprochait mais c'est vrai qu'un toast fait l'affaire.

  4. #4
    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
    A aucun moment tu ne défini de listener pour ton button1 , dans ton cas dans le onCreate rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button1.setOnClickListener(this);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 25
    Points : 12
    Points
    12
    Par défaut
    Ca ne fonctionne toujours pas. Mais est-ce que c'est important de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button1.setOnClickListener(this);
    ?
    Car au début quand mon spinner ne fonctionnait pas, le bouton lui marchait très bien, j'avais bien la boite de dialogue avec le bouton ok qui s'ouvrait.

    Est-ce que ça ne serait pas dû au fait que le morceau de code concernant le bouton, ne se trouve pas dans le OnCreate?

  6. #6
    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
    Le listener était défini dans le premier code que tu as donnés , puis ne l'était plus dans le second.

    Fonctionne par étape , fait fonctionner ton bouton , puis rajoute le spinner (ou inversement).
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2013
    Messages : 25
    Points : 12
    Points
    12
    Par défaut
    Oui c'est bon ça marche! Merci beaucoup

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

Discussions similaires

  1. Select sur une BD et Insert dans une autre
    Par arnolem dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/07/2006, 14h14
  2. pb sur ouverture d'une boite de dialogue
    Par DWade dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 03/07/2006, 18h20
  3. [VBA-E]nombre qui influe sur une boite de dialogue
    Par vovor dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 31/05/2006, 14h01
  4. Erreur sur une boite de dialogue WXWIDGETS
    Par barbarello dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 06/01/2006, 20h46
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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