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 RadioGroup - RadioButton


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut Problème RadioGroup - RadioButton
    Bonjour à tous,

    je suis sur la fin de développement de la première version de mon application mais je bute sur un problème. En effet, pour gérer des tris (par prix etc...) je fais appel à un radioGroup composé de 5 radioBouton.

    Je fais ceci dans un sous menu, tel qu'on peut le voir sur cette photo (à l'aide d'une alertDialog):



    Cependant peut importe les interactions que je fais dans le code Java avec le radioGroupe ou les radioBouton, j'ai un FC (un Null Pointer Exception):

    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
     
    //Création de l'AlertDialog
                    AlertDialog.Builder adb = new AlertDialog.Builder(this);
     
                    //On affecte la vue personnalisé que l'on a crée à notre AlertDialog
                    adb.setView(alertDialogView);
     
                    //On donne un titre à l'AlertDialog
                    adb.setTitle("Choisissez votre critères de tris");
     
                    //On modifie l'icône de l'AlertDialog pour le fun ;)
                    adb.setIcon(android.R.drawable.ic_menu_sort_by_size);
     
                    //On affecte un bouton "OK" à notre AlertDialog et on lui affecte un évènement
                    adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
     
                        	//Quand il clic sur OK, on récupère
     
     
     
                        	if (radioButtonPertinence.isChecked()) {
     
                        		System.out.println("salut");
     
                        	}
     
     
                      } });
     
     
     
                    //On crée un bouton "Annuler" à notre AlertDialog et on lui affecte un évènement
                    adb.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                        	//Lorsque l'on cliquera sur annuler on quittera l'application
                        	finish();
                      } });
                    adb.show();
    Ci-dessus un exemple tout bête qui me fait un FC à la ligne 22. Une fois que j'appui sur ok j'ai un FC. Car ce que je voudrais c'est que l'utilisateur choisisse son critère de sélection, ensuite je le mémorise et je fais des traitements en fonction, mais si j'arrive même pas à savoir lequel est coché cela risque d'être difficile.

    Je ne vois donc pas d'ou vient le problème, je pense que c'est tout bête mais j'ai tellement la tête dans le code que je ne dois pas le voir.

    Je vous remercie.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Ton problème vient du fait que l'objet radioButtonPertinence n'est jamais instancié.

    Il te manque un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    radioButtonPertinence = (RadioButton) alertDialogView.findViewById(R.id.id_du_radio_button);
    SI tu ne veux pas t'embeter, et faire cette action de manière correcte, il existe déjà un composant similaire dans le framework Android : http://developer.android.com/guide/t...i/dialogs.html

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Merci d'avoir répondu.

    Juste au dessus du code que j'ai collé, j'ai cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    radioButtonPertinence = (RadioButton) findViewById(R.id.radioPertinence);
    Pourtant ça ne fonctionne pas.

    Ensuite pour ce qui est du framework, j'ai essayé celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    final CharSequence[] items = {"Red", "Green", "Blue"};
     
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a color");
    builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }
    });
    AlertDialog alert = builder.create();
    Il est dans le lien que tu m'as donné cependant, je n'arrive même pas faire en sorte que l'un soit cocher par défaut etc...

    EDIT: Maintenant ça marche quand j'ai rajouterAlertDialogView.find....

    Par contre avec le framework je n'arrive pas intéragir avec les radioButton

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Tu as juste oublié un mot qui a toute son importance.
    Tu as écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    radioButtonPertinence = (RadioButton) findViewById(R.id.radioPertinence);
    Et j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    radioButtonPertinence = (RadioButton) alertDialogView.findViewById(R.id.radioPertinence);
    Ton code signifie qu'il va chercher l'objet référencé par l'identifiant radioPertinance dans le layout de ton activity. Or cet objet n'est pas dans l'activity mais dans un Dialog. Il faut donc spécifier la vue dans laquelle il doit chercher (c'est à dire alertDialogView)







    Et si tu veux utiliser le composant par défaut en spécifiant l'item pré-coché, il faut remplacer cette valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int itemIndex = 1;
    builder.setSingleChoiceItems(items, itemIndex, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    On a répondu en même temps, j'ai fait un EDIT. Désolé.

    Par contre avec le framework je n'arrive pas interagir avec les radioBouton, je n'arrive même pas à en cocher un par défaut.

    EDIT: Ok je vais essayer, merci

  6. #6
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    J'avoue que je ne suis pas fort en AlertDialog (je préfère les activités en mode "Dialog" que je démarre avec startActivityForResult)....

    Mais il me semble qu'il nous manque du code.... Pour la pré-sélection du radio-button....

    Comme l'a dit simon, l'idéal c'est d'utiliser l'existant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[] items = ...;
    int selectedItemIdx = ...; // -1 pour aucun
     
    builder.setSingleChoiceItems(items, selectedItemIdx , new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }
    });
    Une remarque qui n'a rien à voir avec la question originelle... Ce genre de "dialog" (en fait pas vraiment une boite de dialogue mais un 'popup') va à l'encontre de la "philosophie" du design Android.... Avec une boite de ce genre, un click sur l'item devrait le valider automatiquement, un click sur "retour" l'annuler... pas besoin de boutons donc à priori...

    Dans le cas d'un choix multiple, le "retour" valide l'opération: si changements il y a eu on les applique, sinon... ben on fait rien
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Oui tu as totalement raison nicroman je vais utiliser l'existant.

    EDIT: Avec le framework je n'arrive pas à faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (le deuxième est coché)
    {
         //Je fais mon traitement
    }
    EDIT2: J'ai rien dit c'est bon. Cependant quand je clic dessus comment je peux faire pour valider (car la je peux seulement quitter l'alertDialog avec retour et comment je fais pour garder ce choix, c'est à dire si je vais à nouveau dans trier le dernier choix de l'utilisateur est coché. Je vous remercie

  8. #8
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Une remarque qui n'a rien à voir avec la question originelle... Ce genre de "dialog" (en fait pas vraiment une boite de dialogue mais un 'popup') va à l'encontre de la "philosophie" du design Android....
    Euh où tu as vu ça ? Après c'est bien une popup/dialog.
    Mais les Dialog ont toujours été utilisé sous Android.

    A dialog is usually a small window that appears in front of the current Activity. The underlying Activity loses focus and the dialog accepts all user interaction. Dialogs are normally used for notifications that should interrupt the user and to perform short tasks that directly relate to the application in progress (such as a progress bar or a login prompt).
    http://developer.android.com/guide/t...i/dialogs.html

    Une Dialog Activity sont une solution également, tout dépends du besoin que tu as. Une activity par dialogue devient très lourd pour le système.

    EDIT2: J'ai rien dit c'est bon. Cependant quand je clic dessus comment je peux faire pour valider (car la je peux seulement quitter l'alertDialog avec retour et comment je fais pour garder ce choix, c'est à dire si je vais à nouveau dans trier le dernier choix de l'utilisateur est coché. Je vous remercie
    Tu peux toujours l'enregistrer dans les préférences. Comme cela tu ne te prends pas la tête pour la gestion des données ^^. Sinon sauvegarde les dans des variables de ta classe, si tu ne veux pas que cela soit sauvegarder à la fermeture de celle ci.
    Il suffira après de mettre à jour tes radiobuttons au lancement de ton alerte dialogue.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  9. #9
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Euh où tu as vu ça ? Après c'est bien une popup/dialog.
    Mais les Dialog ont toujours été utilisé sous Android.
    Oui oui, j'ai pas dis que les dialogues c'est le mal Ils sont juste over-used à mon avis... En particulier la classe "AlertDialog"
    Je disais juste que les boutons ok/cancel devraient être enlevés...
    (comme d'ailleurs montré dans le lien que tu donnes: http://developer.android.com/guide/t...ml#AddingAList )

    Tout se joue sur la différence entre "dialog" et "popup"....
    http://developer.android.com/design/...s/dialogs.html

    Je vais essayer de pas m'embrouiller tout seul dans mes explications

    Le "Dialog" est une étape forcée entre deux états... Par exemple je clique sur un bouton "Intensity" et je choisis le niveau d'intensité avec un slider, pas de choix simple possible, boutons obligatoires...
    C'est aussi le moyen d'afficher une "alerte" à l'utilisateur (confirmation, etc...).

    Un "Popup" un choix simple entre plusieurs valeurs à résultat unique: Un menu, un choix de contact, un spinner... La pour un critère de tri c'est typiquement le cas, la solution popup est donc recommandée.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Oui oui, j'ai pas dis que les dialogues c'est le mal


    Je disais juste que les boutons ok/cancel devraient être enlevés...
    Oui, dans ce cas là ils ne servent à rien ^^

    Le "Dialog" est une étape forcée entre deux états... Par exemple je clique sur un bouton "Intensity" et je choisis le niveau d'intensité avec un slider, pas de choix simple possible, boutons obligatoires...
    C'est aussi le moyen d'afficher une "alerte" à l'utilisateur (confirmation, etc...).
    Hmm Oui et Non, pour ce qui est des notification il est quand même plus intéressant d'utiliser les alertDialog à mon avis.
    Les DialogActivity sont nécessaire si tu veux réellement avoir une Dialog riche en présentation et comme tu dis est une étape entre deux états.
    Pour les alertes, warning et autres, il semblerait être plus courant d'utiliser une alerteDialog.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

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

Discussions similaires

  1. problème avec radiobutton
    Par sky88 dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/07/2009, 08h52
  2. Problème avec RadioButton dans une DataList
    Par luimême dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/11/2007, 10h54
  3. petit problème avec RadioButtons et event :-(
    Par Thundereagle dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/09/2007, 12h39
  4. Problème de couleur RadioGroup & Radiobutton
    Par gobgob dans le forum Delphi
    Réponses: 20
    Dernier message: 06/07/2006, 15h05

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