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

Android Studio Java Discussion :

Android Studio - Serie de bouton


Sujet :

Android Studio Java

  1. #21
    Membre à l'essai
    Homme Profil pro
    Directeur technique
    Inscrit en
    Novembre 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 44
    Points : 15
    Points
    15
    Par défaut
    De toute facon, j'ai dis une betise lol.
    Avec 6 activités je ne suis meme pas a 4Mo.
    Mais ta methode m'intrigue, comment pourrais-je attribuer une valeure a un bouton?
    J'imagine que la valeure total je vais pouvoir la definir dans la combinaison, en trifouillant un peu.

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Mais ta methode m'intrigue, comment pourrais-je attribuer une valeure a un bouton?
    il y a plein de façons de procéder.
    La plus "automatique", c'est d'utiliser le tag pour y mettre la valeur du bouton, ça évite d'avoir un test du bouton lors du traitement, ou d'affecter un évènement par clic.
    Quel que soit le bouton, tu lis le tag et tu as la valeur de ce bouton: Si tu affectes le tag via l'éditeur graphique, ton tag sera un string, suffit de le convertir en Int

    Pour l'addition, tu as aussi plein de façons de procéder.

    Exemple: Tu gères un indice qui est le numéro du bouton pressé: à chaque détection d'un clic tu diminues l'indice, initialisé à 3 dans ton cas
    Du coup, il te suffit de faire "tag * indice" pour avoir la valeur réelle du bouton (le tag étant le nombre, l'indice représentant milliers,centaines, dizaines et unité). Une fois à 0 on réinitialise pour l'entrée d'un nouveau code.
    Ça, c'est la façon qui colle le plus à l'esprit "humain" de la chose, mais ce n'est pas la plus efficace.

    Du coup, il y a une méthode plus efficace: tu as une variable "total": à chaque clic sur un bouton, si total > 999 tu remets total à 0, sinon tu multiplies total par 10. Tu ajoutes ensuite le tag au total, il te suffit de comparer à chaque clic avec ta combinaison.

    Si, par exemple, l'utilisateur appuie sur les boutons 1 5 6 7 2, ça donne:

    1 -> Total = 1
    5 -> Total *10 + 5 = 15
    6 -> total*10 + 6 = 156
    7 -> total*10 + 7 = 1567 : la comparaison avec la combinaison ne peut retourner un résultat correct que dans ce cas, vu que la combinaison est forcément > 999 et <= 9999
    2 -> total > 999 et donc total = 0 + 2 = 2 (premier chiffre de la tentative suivante)

    Cette méthode fonctionne bien si tu as max 9 boutons et que tu n'affectes à aucun la valeur "0", sinon il faut un tout petit peu aménager et ça fonctionne avec un nombre quelconque de boutons.
    Il n'y a aucune boucle, aucune gestion d'indice,l'évènement est le même pour tous les boutons, et il ne comporte qu'un test sur total, une multiplication par 10, une addition, et un test de comparaison avec la combinaison:

    si total > 999 total = 0
    total = (total * 10) + tag converti en Int
    si total = combinaison -> Action

    3 lignes et ta combinaison c'est juste un nombre représentant l'ordre souhaité des boutons: combinaison = 1342 veut dire bouton1 + bouton 3 + bouton4 + bouton 2
    Sur une petite cible en langage d'assembleur tu peux remplacer le "total *10" par un shift genre total << 4, avec évidemment la combinaison établie en conséquence, mais c'est juste pour info, dans ton cas c'est inutile et la lisibilité du code prime sur un gain inutile.

    Maintenant, à partir de là tu peux améliorer en fonction de ton application, comme ajouter l'affichage d'un signe "*" pour montrer le nombre de chiffres déjà entrés, ou encore remettre total à 0 après un temps x d'inactivité, etc. C'est à toi de voir en fonction de ton appli, que je ne connais pas.

    A+
    Claude

  3. #23
    Membre à l'essai
    Homme Profil pro
    Directeur technique
    Inscrit en
    Novembre 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 44
    Points : 15
    Points
    15
    Par défaut
    Du coup je reviens car j'ai détecté un "problème", si je peux dire.
    1· Pour ce qui est du toast a afficher, je suis revenu sur cette option, sur le plan esthétique, c'est plus agréable, du coup le code est le suivant :

    Button btn5 = findViewById(R.id.btn5);
    btn5.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    if (combinaison.get(i) == v.getId()){
    i++; Toast.makeText(MainActivity.this,"Bravo! Tu as trouvé la recette!", Toast.LENGTH_LONG).show();
    i=5;

    Maintenant, mon problème,
    Je suis obligé d'appuyer 2 fois sur chaque bouton pour que mon clic soit pris en compte, est-ce une option a changé? désactiver?

    J'ai déjà créé des boutons pourtant, je n'ai jamais été confronté a un problème de la sorte.

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Si tu passais en mode debug dans Android Studio, tu pourrais pister ton code et voir très simplement où est le problème.
    En outre c'est un excellent exercice lorsqu'on débute, on voit ce qui se passe.

    Personnellement, ça fait une éternité que je ne débogue plus rien sans passer par un débogueur temps réel, même sur de très petites cibles comme les PIC etc.

    A+
    Claude

  5. #25
    Membre à l'essai
    Homme Profil pro
    Directeur technique
    Inscrit en
    Novembre 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2017
    Messages : 44
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par ClaudeBg Voir le message
    Si tu passais en mode debug dans Android Studio, tu pourrais pister ton code et voir très simplement où est le problème.
    En outre c'est un excellent exercice lorsqu'on débute, on voit ce qui se passe.

    Personnellement, ça fait une éternité que je ne débogue plus rien sans passer par un débogueur temps réel, même sur de très petites cibles comme les PIC etc.

    A+
    Claude
    Ok, merci d'avoir répondu.
    Je m'y met tout de suite

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Android] ANDROID STUDIO : Lancer un appel en appuyant sur un bouton
    Par JonathanVFV dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 20/11/2017, 16h11
  2. Android Studio - Enregistrer au clic sur un bouton
    Par charles27 dans le forum Android Studio
    Réponses: 9
    Dernier message: 31/07/2017, 15h36
  3. Android Studio - Compter Personnes qui Cliquent sur le Bouton
    Par Hokseed dans le forum Android Studio
    Réponses: 5
    Dernier message: 22/05/2016, 20h46
  4. Android Studio - Problème avec les boutons
    Par Arthemiys dans le forum Android Studio
    Réponses: 3
    Dernier message: 04/04/2016, 16h00
  5. Google sort un nouvel EDI pour Android : Android Studio
    Par Gordon Fowler dans le forum Android Studio
    Réponses: 43
    Dernier message: 03/12/2013, 19h08

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