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 :

onKeyDown() et TabHost


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut onKeyDown() et TabHost
    Bonjour !

    Mon appli est composée d'une TabActivity avec 4 Activity :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    tabHost = getTabHost(); 
    TabHost.TabSpec tabSpec; 
     
    Intent intent;
     
    intent = new Intent().setClass(this, A.class);
    tabSpec = tabHost.newTabSpec("un");
    tabSpec.setIndicator("titre un");
    tabSpec.setContent(intent);
    tabHost.addTab(tabSpec);
     
    /* Et ainsi de suite pour les 3 autres onglets */
    Pour chacune des 4 activités, j'ai implémenté la méthode suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 ) {
    /* code qui affiche une boite de dialogue demandant confirmation pour quitter */
    }
    else {
    	return super.onKeyDown(keyCode, event);
    }
    }
    En fait, j’intercepte simplement le clic sur le bouton retour. Ce qui m'embête, ce que la même méthode est implémentée dans les 4 activités.

    Y'aurait-il un moyen pour n'écrire ce code qu'à un seul endroit ? dans la TabActivity par exemple ?

    Merci d'avance.

  2. #2
    Expert confirmé

    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
    Par défaut
    Bonjour,

    Tu peux toujours créer une interface incorporant cet event et sa gestion et la mettre en implement de tes Activity.

    Sinon intercepter directement le bouton back depuis ta TabActivity, il me semble.( A vérifier )

  3. #3
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Bonjour,

    Tu peux toujours créer une interface incorporant cet event et sa gestion et la mettre en implement de tes Activity.
    Ben non, ça revient au même... Les interfaces ne font que déclarer les méthodes, sans implémentation.

    Ils permettent de pallier l'impossibilté de faire de l'héritage multiple.

    Citation Envoyé par Feanorin Voir le message
    Sinon intercepter directement le bouton back depuis ta TabActivity, il me semble.( A vérifier )
    J'ai déjà testé, ça ne fonctionne pas

  4. #4
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Ou creer une classe "InterceptedBackTabActivity" qui hérite de TabActivity et faire hériter les autres de celle ci ?

    Je vois pas bien le probleme...

  5. #5
    Expert confirmé

    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
    Par défaut
    Ou creer une classe "InterceptedBackTabActivity" qui hérite de TabActivity et faire hériter les autres de celle ci ?
    Aussi

    Pour l'implements cela t'évitera de réécrire le code à chaque coup, le code se trouvant dans l'interface que tu aura créer

    Ils permettent de pallier l'impossibilté de faire de l'héritage multiple.
    Oui et plein d'autre chose ...

    Ben non, ça revient au même... Les interfaces ne font que déclarer les méthodes, sans implémentation.
    non ... :/
    Elle garde le comportement par défaut de tes fonctions (via le super).

    Donc tu n'auras juste à mettre en place ton implements et laisser les fonctions telles quelles (Ce qui est plus propre que du copier coller ).

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Euh ... les interfaces ne peuvent que déclarer les méthodes, celles-ci ont un corps vide.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre confirmé Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Ben, j'étais persuadé que les fonctions n'était que virtuelle et non pas virtuelle pure, complètement à côté de la plaque sur le coup :/.
    Ah ah, j'ai pas osé le dire . Merci d'être intervenu tout de même

    Citation Envoyé par nicroman Voir le message
    Ou creer une classe "InterceptedBackTabActivity" qui hérite de TabActivity et faire hériter les autres de celle ci ?

    Je vois pas bien le probleme...
    En effet. En créant une classe InterceptedBackActivity héritant de Activity, et les activités reliées à mon TabHost héritant de cette même InterceptedBackActivity, ça fonctionne impec'.

    Du coup, j'en ai profité pour factoriser d'autres parties de mon code, excellent ! Merci à tous !

    Je voulais tout de même m'excuser, je suis un peu rouillé avec les fondamentaux de la POO en Java "pure". Mais bon, visiblement, je ne suis pas le seul...

  8. #8
    Expert confirmé

    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
    Par défaut
    Je voulais tout de même m'excuser, je suis un peu rouillé avec les fondamentaux de la POO en Java "pure". Mais bon, visiblement, je ne suis pas le seul...

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

Discussions similaires

  1. [FLASH MX 2004] [Key] Evenement onKeyDown
    Par freegreg dans le forum Flash
    Réponses: 2
    Dernier message: 08/07/2004, 17h38
  2. OnKeyDown.......
    Par PartexLaboratory dans le forum MFC
    Réponses: 7
    Dernier message: 07/06/2004, 10h45
  3. Accès à une case d'un DBGrid dans l'event OnKeyDown
    Par fba dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/03/2004, 12h48
  4. OnKeyDown avec TAB et SHIFT TAB
    Par StarMusic dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/12/2003, 12h21
  5. [Applicatif]OnKeyDown
    Par psl dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2002, 15h55

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