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 Discussion :

incrementer touche de clavier à l'ouverture


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 115
    Par défaut incrementer touche de clavier à l'ouverture
    bonjour,
    je suis en train de creer un clavier virtuel. Celui ci à une seule touche "laTouche".
    La premiere fois que j'ouvre mon clavier virtuel, et que j'appuis sur "laTouche" , le chiffre 1 apparait dans la textbox.
    Jusqu'ici je sais faire.
    Maintenant, je ferme mon appli, j'en ouvre une autre, mon clavier virtuel apparait à nouveau.
    A ce moment, je voudrais en appuyant sur "laTouche" que le chiffre 2 apparaisse.
    Et ainsi de suite a chaque nouvelle apparition du clavier.
    Autrement dit, stocker une variable nombreIncrement accessible en lecture et ecriture a chaque nouvelle instance de mon clavier virtuel.
    Comment puis je faire?
    merci

  2. #2
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par défaut
    Même si je pense que c'est un anti-pattern, peut-être qu'utiliser le Singleton (ici pur Java) peut-être une solution.

    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
     
    public class Singleton{
     
      private int nombre;
     
      private static Singleton INSTANCE;
     
      private Singleton(){
        nombre = 1;
      }
     
      public static Singleton getInstance(){
        if(INSTANCE == null){
          INSTANCE = new Singleton();
        }
      }
     
      public int getNombre(){
        return nombre;
      }
     
      public void incremente(){
        nombre++;
      }
    }
    Cordialement.

  3. #3
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par défaut
    Autre méthode (meilleure): l'injection de dépendance.

    Plus complexe, mais mieux.

    Une interface pour le contrat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public interface SauvegardeNombre{
      int getNombre();
      void implemente();
    }
    Implémentation:
    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
     
    public class SauvegardeNombreImpl implements SauvegardeNombre{
     
       private int nombre;
     
       public SauvegardeNombreImpl(){
         nombre = 1;
       }
     
      @Override
      public int getNombre(){
        return nombre;
      }
     
      @Override
      public void incremente(){
        nombre++;
      }
    }
    Du coup, tu va créer une classe de clavier virtuel et c'est dans cette classe que tu va garder l'information "c'est quel clavier".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class MonClavierVirtuel{
     
       private final int numero;
     
       public MonClavierVirtuel(SauvegardeNombre sauvegarde){
          numero = sauvegarde.getNombre();
          numero.incremente();
       }
     
       //ect
     
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 115
    Par défaut
    merci , mais ca ne fonctionne pas. j'ai bien corrigé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface SauvegardeNombre{
      int getNombre();
      void incremente();
    }
    mais le probleme vient de la (j'ai aussi corrigé le type de la class, et le nom de la variable):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public MonClavierVirtuel(SauvegardeNombreImpl sauvegarde){
          numero = sauvegarde.getNombre();
          sauvegarde.incremente();
       }
    en effet, j'ai copié ce tuto de création de clavier
    je n'y connait rien en java, et encore moins en android, mais aprioris , la classe MonClavierVirtuel est appelé depuis un fichier xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <service
                android:name=".MyInputMethodService" (cad ma classe MonClavierVirtuel)
                android:label="Keyboard Display Name"
    [...]
            </service>
    du coup, je vois mal comment je pourrais passer au constructeur toujours le meme objet SauvegardeNombreImpl si l'appel se fait depuis un fichier xml?
    au pire, y a peut etre moyen d'ecrire et lire sur un fichier en dur pour chaque incrémentation?

  5. #5
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par défaut
    Du coup, à priori, ce n'est effectivement pas possible. Il faut que le clavier soit un composant. Il est possible de faire peut-être un intent pour passer une autre vue qui sera le clavier..

    J'ai un peu oublié SMB116 (Module Androïd du CNAM).

    Mais dans mon projet, je faisait comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     protected void precedent(View view){
               Intent intent = new Intent(this,getPrecedenteClass());
               intent.putExtra(KEY_INTENT_SAVE_CONTXTE,contexteAction);
               startActivity(intent);
               finish();
               }
    Dans le cadre de mon projet, j'ai un Template Method qui permet d'avoir la vue suivante (j'ai un workflow). La vue suivante est une activité (extnds Activity).

    Attention néanmoins aux cycle de vie. Si on ouvre une nouvelle activité, l'activité courante est encore en activité.

    Il est de fait possible de passer la sauvegarde (de numéro) par intent.put("maCle",sauvegardeNombre)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 115
    Par défaut
    désolé, mais je n'ai pas compris la moitié des termes, je n'ai jamais fait de l'android!
    si j'ai bien compris, mon clavier virtuel est une "activité". Du coup, je vois deux chose:

    1)a chaque fois que mon clavier disparait, l'activité disparait complètement on.destroy(), puis redémarre complétement onStart() (cad, disparait de la ram)
    dans ce cas j'utilise SharedPreferences.

    2)ou bien,a chaque fois que mon clavier disparait, l'activité se stoppe onPause() puis reprend onResume() (cad reste dans la ram)
    je crée un Intent

    j'ai bon, ou il y a d'autre possibilité?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/09/2018, 17h53
  2. Détecter combinaison de touches du clavier
    Par Shogun dans le forum Langage
    Réponses: 14
    Dernier message: 24/09/2004, 17h40
  3. [Turbo Pascal] Simulation de touche du clavier
    Par trapiste dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 04/09/2004, 16h35
  4. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31
  5. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11

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