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 :

Modifier AlertDialog message via un bouton


Sujet :

Composants graphiques Android

  1. #1
    Nouveau Candidat au Club Avatar de Melilath
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Modifier AlertDialog message via un bouton
    Bonjour,

    Je débute en Android, et je fais fasse à un problème lié aux AlertDialog.

    Mon application contient une ListView, dont chaque élément de cette ListView contient un bouton qui va lancer un AlertDialog.
    Dans cet AlertDialog, j'affiche un message, qui vient de ma méthode currentUser.getRandomMessage(). Je souhaite que mon AlertDialog permette de "relancer" le message, donc de garder la même boite de dialogue mais de changer le message (sans fermer la boite).

    Ci-dessous le code de mon bouton. Bien-sûr, si je suis ici, c'est que ça ne marche pas. L'AlertDialog se lance bien avec un message aléatoire, il se ferme bien si j'appuie sur le bouton "OK". Par contre, je n'arrive pas à le relancer. J'ai créé un bouton neutre "Relancer" pour pouvoir relancer. J'essaie de modifier ce bouton pour pouvoir mettre à jour le message et montrer le dialogue. Malheureusement, l'alert dialog se ferme tout de suite quand j'appuie sur le bouton relancer.

    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
    Button buttonRandomMess = (Button) convertView.findViewById(R.id.buttonRandom);
    buttonRandomMess.setOnClickListener(new View.OnClickListener() {
        public void onClick(final View v) {
             //Je récupère l'user qui va avoir un message aléatoire
            final User currentUser = (User) v.getTag(v.getId());
              AlertDialog.Builder builder = new AlertDialog.Builder(getActualContext());
            builder.setMessage((String) currentUser.getRandomMessage());
            //Bouton pour fermer
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
            //Bouton pour relancer
            builder.setNeutralButton("Relancer", new Dialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface d, int id) {
                }
            });
             //Creation de la boite de dialogue
            final AlertDialog dialog = builder.create();
             //Modification du bouton neutre pour relancer le message
            dialog.setButton(DialogInterface.BUTTON_NEUTRAL,"Relancer",new Dialog.OnClickListener() {
                @Override
                public void onClick(DialogInterface d, int id) {
                    dialog.setMessage((String) currentUser.getRandomMessage());
                    dialog.show();
                }
             });
            dialog.show();
        }
    });
    Comment puis-je modifier l'alertDialog déjà ouverte via le bouton neutre ?

    Si vous avez aussi des commentaires généraux sur ce morceaux de code, n'hésitez pas !

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Points : 690
    Points
    690
    Par défaut
    Bonjour,

    Pour y arriver il faut créer une AlertDialog avec une layout custom c'est à dire tu crées une fichier xml dans le dossier layout et quetu affecteras à ton AlertBuilder. Jettes un oeil dans la documentation officielle c'est bien expliqué.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

    N'oubliez pas de consulter les FAQ Swift, Android
    Tutoriel : Développer une application multilingue sous iOS

  3. #3
    Nouveau Candidat au Club Avatar de Melilath
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour cette indication !

    J'ai donc changer pour un layout (alertdialog_custom)

    Mon layout :

    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
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
     
        <TextView
            android:id="@+id/textviewAlert"
            android:padding="10dp"
            android:textAlignment="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="10dp"
            android:text="Message"/>
     
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
     
        <Button
            android:id="@+id/relanceButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Relancer"
     
            />
        <Button
            android:id="@+id/closeButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Fermer"
            />
        </LinearLayout>
    </LinearLayout>
    J'arrive à l'afficher correctement, et à le fermer via le bouton Fermer que j'ai ajouter.
    Par contre, mon bouton Relancer n'arrive pas à modifier le texte de mon Textview

    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
     
    //J'affiche mon message aléatoire dans le texte view
    LayoutInflater inflater = (LayoutInflater) getActualContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    View view = inflater.inflate(R.layout.alertdialog_custom, null);
    TextView messageText = (TextView) view.findViewById((R.id.textviewAlert));
    messageText.setText((String) currentUser.getRandomMessage());
     
    //Je modifie le bouton
    Button rButton = (Button) view.findViewById((R.id.relanceButton));
    rButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(final View v) {
                            //Je récupère le textview exactement de la même manière qu'avant
                            LayoutInflater inflater = (LayoutInflater) getActualContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
                            View view = inflater.inflate(R.layout.alertdialog_custom, null);
                            TextView messageText  = (TextView) view.findViewById((R.id.textviewAlert));
                            //Je le modifie
                            String random = (String) currentUser.getRandomMessage();
                            messageText.messageText (random);
                        }
    });
    L'alertDialog s'affiche bien, avec un premier message. Mais lorsque je clique sur relancer, rien ne se passe. Je garde bien ma fenetre, la variable random propose bien un nouveau message, mais le texte ne se change pas. Ce que je ne comprends pas non plus, c'est que même si je vois le message dans mon AlertDialog, quand je regarde la valeur mText de mon TextView, il est toujours égal à la valeur d'origine ("Message").

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Logiciel
    Inscrit en
    Décembre 2015
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2015
    Messages : 230
    Points : 20
    Points
    20
    Par défaut
    J'ai peut-être mal compris ton problème malgré qu'il soit bien expliquer, mais quand je vois ça:
    " il est toujours égal à la valeur d'origine ("Message"). "

    Je ne veux pas t'induire en erreur, étant moi-même débutant sur Android, mais je pense à une condition, tu dois probablement vérifier si ton message est égale ou non à ton message dans ta variable "variable_message" par exemple.
    Les autres me corrigeront ^^

Discussions similaires

  1. Déplacer des messages via raccourci clavier ou bouton
    Par le chat 78 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 21/11/2007, 17h32
  2. Modifier L'ip via VB
    Par FlyRoxxx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/10/2005, 08h33
  3. [INPUT TYPE=SUBMIT] Comment modifier la largeur d'1 bouton
    Par Kylen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 12h27
  4. Message avec un bouton "oui" et "non"
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2004, 15h50

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